Dato un codice di ordinamento, esiste un collegamento data.table per duplicare le funzionalità first
e last
che si trovano in SAS e SPSS?utilizzando data.table per contrassegnare il primo (o ultimo) record in un gruppo
L'approccio pedonale sottostante indica il primo record di un gruppo.
Data l'eleganza di data.table (con cui sto lentamente diventando familiare), presumo ci sia una scorciatoia utilizzando un join automatico & mult
, ma sto ancora cercando di capirlo.
Ecco l'esempio:
require(data.table)
set.seed(123)
n <- 17
DT <- data.table(x=sample(letters[1:3],n,replace=T),
y=sample(LETTERS[1:3],n,replace=T))
sortkey <- c("x","y")
setkeyv(DT,sortkey)
key <- paste(DT$x,DT$y,sep="-")
nw <- c(T , key[2:n]!=key[1:(n-1)])
DT$first <- 1*nw
DT
buone risposte qui, tra cui una di dati. soluzione di tabella: http://stats.stackexchange.com/questions/7884/fast-ways-in-r-to-get-the-first-row-of-a-data-frame-grouped-by-an-identifier/7889 # 7889 – Chase
Penso che M.Mimo voglia specificamente * etichettare * il primo e l'ultimo nel gruppo anziché * estrarli *. Il link che hai indicato, così come l'approccio 'mult' cui l'OP si riferisce, mostra come estrarre *, non * etichetta *. –