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

R 将列和放在矩阵的新行中,r,sum,col,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))) [注意:我在这里将第二列和第三列作为整数,因为在我的实际数据集中

我有一个数据框架,它由第一列中的城市名称因子和第二列和第三列中的项目数整数组成

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,])
我得到一个错误:

colSumsProjects[2:3,]中出现错误:“x”必须是数字

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


是否有人可以建议如何获取列总和在底部创建一个新行,用于存放结果?

您可以执行以下操作:

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添加到字符向量中,然后生成数据。frame

它应该是colSumsProjects[,2:3]在代码中,它是所有列的第2行和第3行的子集,其中第一列不是数字。我建议使用类似rbindProjects、colSumsProjects的内容。然而,它并不是那么简单:第一列不是数字;b第一列是一个因子,不能轻易地取任意值。@akrun您建议的内容提供了每列的总和。但是,我想将其嵌入到Projects数据框架的底部,这样就有了第四行,其中包含列总和。我该怎么做?@Ott Toomet我知道我不能使用您提供的函数,因为第一列不是数字。鉴于此表中的某些列是因子,而其他列是数字,我如何计算这些数字的列和?@Danny如果您可以将第一列设为row.names,将“Projects”设为矩阵,我们可以使用addmargins`