我经常有按一个或多个变量分组的数据,每个组内有多个注册。我希望从数据框中按各种标准选择组。
我通常使用split-sapply-rbind方法,使用逻辑向量从列表中提取元素。
以下是一个小例子。我从一个具有一个分组变量(“group”)的数据框开始,并希望选择具有最大质量小于45的组:
我刚开始使用plyr,现在我想知道:是否有仅基于plyr的替代方法来实现这个功能?
我通常使用split-sapply-rbind方法,使用逻辑向量从列表中提取元素。
以下是一个小例子。我从一个具有一个分组变量(“group”)的数据框开始,并希望选择具有最大质量小于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)
我刚开始使用plyr,现在我想知道:是否有仅基于plyr的替代方法来实现这个功能?
ddply(dd, "group", subset, max(mass) < 45)
。 - hadley