我有一个数据框,想添加一个“ total”列,并将行的总和作为结果。
起点:
var1 var2
1 2
1 2
1 2
所需结果:
var1 var2 total
1 2 3
1 2 3
1 2 3
我的代码这样做,但是将“总计”列的标题名称更改为var1列的标题。为什么?有什么更好的解决方案?
这是我的代码:
df<-data.frame( "var1"=c(1,1,1), "var2"=c(2,2,2))
df["total"]<-0
for (i in 1:2 ){
df$total = df$total + df[i]
}
df
结果:
var1 var2 **var1**
1 2 3
1 2 3
1 2 3
答案 0 :(得分:1)
正确的方法是:
df$total = df$var1 + df$var2
df[["total"]] = df[["var1"]] + df[["var2"]]
请注意使用双括号,如果您使用双括号而不是单括号,您的解决方案将起作用
罗纳克建议:
df$total = rowSums(df)
答案 1 :(得分:0)
您可以使用mutate()
功能
library(tidyverse)
df<-df%>%mutate(total=rowsum(var1,var2))
> df
var1 var2 total
1 1 2 3
2 1 2 3
3 1 2 3
答案 2 :(得分:0)
这将起作用,并且不会重命名您的列。 [i]
返回data frame
,其中[[i]]
返回numeric
。因此,您要添加单个数字。
df<-data.frame( "var1"=c(1,1,1), "var2"=c(2,2,2))
df["total"]<-0
for (i in 1:2){
df$total = df$total + df[[i]]
}