Podzbiór listy - sposób na plyr?
Często mam dane pogrupowane według jednej lub kilku zmiennych, z kilkoma rejestracjami w każdej grupie. Z ramki danych chcę wybrać grupy według różnych kryteriów.
Zwykle stosuję podejście dzielonego sapply-rbind, w którym wyodrębniam elementy z listy za pomocą wektora logicznego.
Oto mały przykład. Zaczynam od ramki danych z jedną zmienną grupującą („grupa”) i chcę wybrać grupy o maksymalnej masie mniejszej niż 45:
dd <- data.frame(group = rep(letters[1:3], each = 5),
mass = c(rnorm(5, 30), rnorm(5, 50),
rnorm(5, 40)))
dd2 <- split(x = dd, f = dd$group)
dd3 <- dd2[sapply(dd2, function(x) max(x$mass) < 45)]
dd4 <- do.call(rbind, dd3)
Właśnie zacząłem używać plyr, a teraz zastanawiam się:
czy istnieje alternatywa do osiągnięcia tego celu?