将列总和放在矩阵的新行中

时间:2015-11-03 16:30:41

标签: r sum col

我的数据框由第一列中的市政名称(因子)和第二列和第三列中的项目数(整数)组成。

Var.1<-c("Andover", "Avon", "Bethany")
Freq.x<-c(2,NA,10)
Freq.y<-c(4,2,9)
Projects<-data.frame(Var.1,as.integer(as.numeric(Freq.y)),as.integer(as.numeric(Freq.x)))

[注意:我在这里将第二列和第三列作为整数,因为这是它们在我的实际数据集中的分类方式。]

我可以使用以下方式获取行的行总和:

Projects$Sum<-rowSums(Projects[,2:3])

但是,我无法弄清楚如何获取列总和。我尝试使用以下公式:

Projects[Total,]<-colSums(Projects[2:3,])

我收到错误:

  

colSums中的错误(项目[2:3,]):'x'必须是数字

即使我将第二列和第三列转换为as.numeric,我也会得到相同的响应。

有人可以建议如何获取列总和在底部创建一个新行,这将包含结果吗?

1 个答案:

答案 0 :(得分:0)

您可以这样做:

Var.1<-c("Andover", "Avon", "Bethany")
Freq.x<-c(2,NA,10)
Freq.y<-c(4,2,9)
freq <- cbind(Freq.x, Freq.y)
freq <- rbind(freq, colSums(freq, na.rm=TRUE))
Projects <- data.frame(name=c(Var.1, "Total"), freq)

特别是:将数字部分分开并计算它的总和;在将字符向量转换为因子之前,将“TOtal”添加到字符向量中,然后生成data.frame