我有两列数值数据,我想插入第三列来求和它们。很简单,但我想在做任何其他事情之前将求和分配给一个变量(长话短说:这些列名会一直更改 [例如,下个月它们可以Col4
和Col5
],这是其他人将使用的代码,如果我能把它放在顶部,我不希望这个关键步骤深埋在代码中(。这是我得到的:
sumColumn <- "df$Col1 + df$Col2"
df <- cbind(data.frame("Col1"=2:5, "Col2"=5:8))
df$Col3 <- sumColumn
df
显然,它返回以下内容:
Col1 Col2 Col3
1 2 5 df$Col1 + df$Col2
2 3 6 df$Col1 + df$Col2
3 4 7 df$Col1 + df$Col2
4 5 8 df$Col1 + df$Col2
我正在寻找的是这个:
Col1 Col2 Col3
1 2 5 7
2 3 6 9
3 4 7 11
4 5 8 13
我是否可以对第三行执行强制sumColumn
变量,或者以某种方式创建变量,以便以我想要的方式解释它?感谢您的任何帮助!
你需要
df$Col3 = eval(parse(text=sumColumn))
可以使用df[,"name"]
语法按名称引用列,例如:
df$Col3 <- df[,'Col1'] + df[,'Col2']
因此,如果您在变量n1
和n2
中有列名,您可以执行以下操作:
df$Col3 <- df[,n1] + df[,n2]
在程序顶部定义n1 <- 'Col1'
和n2 <- 'Col2'
, 如果稍后数据框中的列名称发生更改, 您可以更改n1
和n2
的值,程序将继续使用新名称工作。