按R中另一列中的值聚合多个列

时间:2015-02-02 14:40:23

标签: r

我有一个包含31列的数据框(sp.table),顶部有物种名称,包含来自不同样本的物种的丰度数据。我还有一个Cruise列,其中包含Cruise的Cruise ID,其中记录了样本。我想用Cruise聚合每一列,所以我有相同数量的列,但行数较少。

我试过了:

a <- aggregate(sp.table[,1:31]~ sp.table$Cruise), FUN = sum)

但它没有用。

1 个答案:

答案 0 :(得分:2)

如果只有32列,则以下代码应该可以使用

 res1 <- aggregate(.~Cruise, sp.table, FUN=sum)

否则

 res2 <- aggregate(sp.table[1:31], list(Cruise=sp.table$Cruise),
                                 FUN = sum)

如果有NAs

 res3 <-  aggregate(.~Cruise, sp.table,
                  FUN=sum, na.rm=TRUE, na.action=na.pass)

如果只有列的子集需要sum

 resSub <- aggregate(cbind(X1,X2)~Cruise,sp.table, FUN = sum)

数据

set.seed(24)
sp.table <- data.frame(matrix(sample(1:20, 31*10, replace=TRUE), 
          ncol=31), Cruise=LETTERS[1:2], stringsAsFactors=FALSE)