【发布时间】:2016-02-03 21:52:59
【问题描述】:
我有一个数据框,其中包含第一列中的市政名称(因素)和第二列和第三列中的项目数量(整数)。
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(Projects[2:3, ]) 中的错误:“x”必须是数字
即使我将第二列和第三列转换为as.numeric,我也得到相同的响应。
有人可以建议如何获取列总和在底部创建一个新行来存放结果吗?
【问题讨论】:
-
它应该是
colSums(Projects[,2:3])在你的代码中,它是第一列不是数字的所有列的第二第三行的子集。 -
我建议使用
rbind(Projects, colSums(Projects))之类的东西。然而,事情并没有那么简单:a) 第一列不是数字; b) 第一列是一个因子,不能轻易取任意值。 -
@akrun 您的建议提供了每列的总和。但是,我想将它嵌入到 Projects 数据框的底部,以便有第四行包含列总和。我该怎么做?
-
@Ott Toomet 我知道我无法使用您提供的功能,因为第一列不是数字。鉴于在此表中某些列是因子,而其他列是数字,我如何获取数字的列总和?
-
@Danny 如果您可以将第一列设置为 row.names 并将“项目”设置为
matrix, we can useaddmargins`