ddply没有组的整个数据?

时间:2013-10-08 00:04:24

标签: r plyr

是否可以使用ddply汇总数据而无需按组分层?我尝试过像

这样的东西
ddply(df, summarize, a = sum(a, na.rm=T), b = sum(b, na.rm=T))

2 个答案:

答案 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
              }))