La mia domanda riguarda R data.table con più chiavi. prendere questo esempio:Combinazione di Join with Not Join in data.table?
library(data.table)
example(data.table)
key(DT)
[1] "x" "y"
e immagino voglio una variazione di "b x è uguale e y è uguale a 3", come qui:
DT[!J("b",3)]
x y v v2 m
1: a 1 42 NA 42
2: a 3 42 NA 42
3: a 6 42 NA 42
4: b 1 4 84 5
5: b 6 6 84 5
6: c 1 7 NA 8
7: c 3 8 NA 8
8: c 6 9 NA 8
La variazione voglio è "x EQUAL b e y NOT uguale a 3 ", come qui:
DT[J("b",!3)]
Error in `[.data.table`(DT, J("b", !3)) :
typeof x.y (double) != typeof i.V2 (logical)
Qualche possibilità di dire a J() di annullare alcune chiavi? Grazie!
trovo la sintassi seguito un po 'più trasparente: 'DT [x == 'b' & y! = 3] ' –
Ciao @GaryWeissman, la tua sintassi implica una scansione vettoriale. Il punto delle operazioni data.table e join è di evitare esattamente quelli, usando i tasti. Ma immagino che tu abbia ragione che per gli utenti non data.table è più facile da capire. –
Non penso che la funzione 'J' supporti operatori logici non concordanti tra gli argomenti. Credo che la sintassi precedente sia ancora più veloce in DT che in DF. –