是否可以使用ddply汇总数据而无需按组分层?我尝试过像
这样的东西ddply(df, summarize, a = sum(a, na.rm=T), b = sum(b, na.rm=T))
答案 0 :(得分:6)
函数ddply
将接受“空”分组变量并对整个表执行分析。
使用子组:
ddply(baseball, .(lg), c("nrow", "ncol"))
lg nrow ncol
1 65 22
2 AA 171 22
3 AL 10007 22
4 FL 37 22
5 NL 11378 22
6 PL 32 22
7 UA 9 22
没有子组:
ddply(baseball, .(), c("nrow", "ncol"))
.id nrow ncol
1 <NA> 21699 22
答案 1 :(得分:0)
感谢安德烈!我需要使用函数ldply()
,并将列表元素的名称放入.id
变量中,但是.()
返回一个缺失值,而一个非空参数,例如.(sex)
根据需要返回名称。我不知道.id
中缺少的值是否是错误。我做了一个解决方法,但这不是很方便:
Reduce(rbind.fill,
lapply(list(.(), .(sex)),
function(x) {
res <- ldply(d, function(y) ddply(y, x, summarize, otos=sum(sample.n), lab=sum(obs.n)))
if (all(is.na(res$.id)))
res$.id <- names(d)
res
}))