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

时间:2019-10-24 09:59:08

标签: r

我有一个数据框,想添加一个“ 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

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]] 
}