使用另一个变量中的公式为数据框创建新列

时间:2013-09-25 08:19:42

标签: r dataframe

我想使用另一个变量中的公式为数据框创建一个新列 例如:
我有一个数据集“aa”是;

x    y 
2    3 
4    5 
6    7 

我的R代码是;

>bb <- "x+y-2" 
>attach(aa) 
>aa$z<- bb 
>detach(aa) 

结果是;

x  y  z 
2  3  x+y-2 
4  5  x+y-2 
6  7  x+y-2 

但我想这样;

x  y  z 
2  3  3 
4  5  7 
6  7  11 

你能帮帮我..

3 个答案:

答案 0 :(得分:33)

如果要在数据框的上下文中评估表达式,可以使用withwithin

aa$z <- with(aa, x + y - 2)

aa <- within(aa, z <- x + y - 2)

或者,如果你的表达式是文本字符串的形式(你应该看看是否有其他方法来编写你的代码;评估任意文本字符串会导致很多问题):

aa$z <- eval(parse(text="x + y - 2"), aa)

答案 1 :(得分:8)

你应该阅读一些关于R 其他而不是An Introduction to R的基本教程,尽管在那里写的$符号比{{1}更明智,更容易理解}}。在此期间试试这个。

attach/detach

给出了:

aa <- data.frame(x = c(2, 4, 6), y = c(3, 5, 7))

然后输入:

> aa
  x y
1 2 3
2 4 5
3 6 7

给出了:

aa$z <- (aa$x + aa$y) - 2

答案 2 :(得分:4)

您可以使用 dplyr

包中的mutate
library(dplyr)
aa <- aa %>% mutate(z = x+y-2)

希望它有所帮助。