Il pacchetto data.table
di R offre un subset rapido dei valori basato sui tasti.Come posso impostare la negazione di un valore chiave usando il pacchetto data.table di R?
Così, ad esempio:
set.seed(1342)
df1 <- data.table(group = gl(10, 10, labels = letters[1:10]),
value = sample(1:100))
setkey(df1, group)
df1["a"]
torneranno tutte le righe in cui df1 gruppo == "a".
Cosa succede se desidero tutte le righe in df1
dove group != "a"
. Esiste una sintassi concisa per questo utilizzando data.table
?
Ma '! =' È come '==' i.e. _vector scans_. Invece, c'è [un_nodo di join_ idioma in [questa domanda] (http://stackoverflow.com/questions/7920688/non-joins-with-data-tables) e [questa domanda] (http://stackoverflow.com/ domande/7822138/porting-set-operazioni-da-RS-data-frame-to-data-tabelle-how-to-identificare-DUPL). Quelli si collegano a una richiesta di funzionalità per semplificare la sintassi non-join. In questo caso sarebbe 'df1 [-" a "]'. L'idioma di non-join dovrebbe essere più veloce della scansione vettoriale. –
Sì, Matt, come sospettavo, le soluzioni di cui sopra fanno uso di scansioni vettoriali, che mi piacerebbe evitare se possibile. Ho ancora notato un aumento di velocità rispetto ai dati di formato simile nel mio commento qui sotto, ma dovrò indagare sul perché. Nel frattempo, mi hai dato i giusti termini di ricerca e le formulazioni alternative della domanda, e capisci chiaramente cosa sto cercando. Grazie per tutto il tuo duro lavoro su questo fantastico pacchetto. –