我经常拥有按一个或多个变量分组的数据,每组内有多个注册。从数据框中,我希望根据各种标准选择组。
我通常使用 split-sapply-rbind 方法,其中使用逻辑向量从列表中提取元素。
这是一个小例子。我从一个包含一个分组变量(“组”)的数据框开始,我希望选择最大质量小于 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 的替代方案来实现这一目标?
至少在这种情况下,这给出了相同的结果
library(plyr)
dd5 <- ddply(dd,.(group),function(x) x[max(x$mass)<45,])
all(dd4==dd5)
[1] TRUE
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)