Per un data.table (o data.frame) in R, desidero trovare tutte le righe che contengono un valore nella colonna "valore" che sono una distanza determinata distanza 'da un altro valore in fila con la stessa chiave. Quindi, data la seguente:Trova le righe con una determinata differenza tra i valori in una colonna
distance <- 22
key value
A 1
B 1
C 1
D 1
A 4
B 4
A 23
B 23
B 26
B 26
C 30
Vorrei annotata la tabella originale con un conteggio di quante righe esistere con la stessa chiave, e un valore che è 22 da esso:
key value count
A 1 1
B 1 1
C 1 0
D 1 0
A 4 0
B 4 2
A 23 0
B 23 0
B 26 0
B 26 0
C 30 0
Non so davvero da dove cominciare questo approccio autoreferenziale alla manipolazione dei dati in R. I miei tentativi iniziali consistevano nel creare un secondo tavolo e cercare di combatterlo, ma mi sembrava un approccio strano e povero.
Nota: sto utilizzando il pacchetto data.table
ma sono felice di lavorare su data.frame in questo caso, se ciò rende le cose più semplici.
riproducibile:
require(data.table)
source <- data.table(data.frame(key=c("A","B","C","D","A","B","A","B","B","B", "C"),value=c(1,1,1,1,4,4,23,23,26,26,30)))
result <- data.table(data.frame(key=c("A","B","C","D","A","B","A","B","B","B","C"),value=c(1,1,1,1,4,4,23,23,26,26,30),count=c(1,1,0,0,0,2,0,0,0,0,0)))
Grazie, puoi spiegare la linea che assegna il risultato $ count? Qual è il. N per, e il [[3]]? – Ina
Sicuro. Ho appena aggiunto alcuni commenti nel codice, che iniziano a decomprimere i dati.sintassi compatta di table call. –
Molto bello, grazie! – Ina