Mam dane panelu (temat/rok), dla których chciałbym tylko trzymać tematy, które pojawiają się maksymalną liczbę razy w roku. Zbiór danych jest duży, więc używam pakietu data.table. Czy istnieje bardziej eleganckie rozwiązanie niż to, które próbowałem poniżej?R data.table dane panelu zliczania
library(data.table)
DT <- data.table(SUBJECT=c(rep('John',3), rep('Paul',2),
rep('George',3), rep('Ringo',2),
rep('John',2), rep('Paul',4),
rep('George',2), rep('Ringo',4)),
YEAR=c(rep(2011,10), rep(2012,12)),
HEIGHT=rnorm(22),
WEIGHT=rnorm(22))
DT
DT[, COUNT := .N, by='SUBJECT,YEAR']
DT[, MAXCOUNT := max(COUNT), by='YEAR']
DT <- DT[COUNT==MAXCOUNT]
DT <- DT[, c('COUNT','MAXCOUNT') := NULL]
DT
Tak więc, zasadniczo, potrzebujesz danych z wszystkich danych z najbardziej bogatego w dane roku dla każdego beatle? –
Pomyśl o tym, byłoby miło, gdyby 'data.table' posiadało niektóre z tych samych funkcji' by' w wyrażeniu 'i', tak jak ma to miejsce w wyrażeniach' j'. –