我想使用另一个变量中的公式为数据框创建一个新列
例如:
我有一个数据集“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
你能帮帮我..
答案 0 :(得分:33)
如果要在数据框的上下文中评估表达式,可以使用with
和within
。
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)
希望它有所帮助。