Sto tentando di aggiungere nuove colonne a data.table
, dove i valori nelle righe dipendono dalla relazione relativa dei valori nella riga. Per essere più precisi, se c'è un valore X in una riga, vorrei sapere quanti altri valori sono nella stessa colonna (e gruppo), che si trovano all'interno di X-30.Contare il numero di valori in una finestra di un data.table per gruppo
Cioè, dato questo:
DT<-data.table(
X = c(1, 2, 2, 1, 1, 2, 1, 2, 2, 1, 1, 1),
Y = c(100, 101, 133, 134, 150, 156, 190, 200, 201, 230, 233, 234),
Z = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12))
vorrei ottenere una nuova colonna, con valori:
N <- c(0, 0, 0, 0, 1, 1, 0, 0, 1, 0, 1, 2)
Ho provato quanto segue, ma non ho ricevuto la risultati che potrei usare:
DT[,list(Y,num=cumsum(Y[-.I]>DT[.I,Y]-30),Z),by=.(X)]
Qualche idea come fare questo? (?)