在数据帧中添加两列的值会无意中更改结果列的标题



>我有一个数据框,想添加一个带有行和结果的"总计"列。

起点:

var1 var2
1    2
1    2
1    2

期望的结果:

var1 var2 total
1    2    3
1    2    3
1    2    3

我的代码这样做,但将"total"列的标题名称更改为 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

正确的方法是:

df$total = df$var1 + df$var2
df[["total"]] = df[["var1"]] + df[["var2"]]

请注意双括号,如果您使用双括号而不是单括号,您的解决方案将起作用

正如罗纳克所建议的:

df$total = rowSums(df)

你可以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

这将起作用,并且不会重命名您的列。[i]返回一个data frame,而 as[[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]] 
}

最新更新