我想使用另一个变量的公式为数据框创建一个新列.
示例:
我有一个数据集"aa"是;
x y
2 3
4 5
6 7
Run Code Online (Sandbox Code Playgroud)
我的R代码是;
>bb <- "x+y-2"
>attach(aa)
>aa$z<- bb
>detach(aa)
Run Code Online (Sandbox Code Playgroud)
结果是;
x y z
2 3 x+y-2
4 5 x+y-2
6 7 x+y-2
Run Code Online (Sandbox Code Playgroud)
但我想这样;
x y z
2 3 3
4 5 7
6 7 11
Run Code Online (Sandbox Code Playgroud)
请你帮助我好吗..
Hon*_*Ooi 36
如果要在数据框的上下文中计算表达式,可以使用with和within.
aa$z <- with(aa, x + y - 2)
Run Code Online (Sandbox Code Playgroud)
要么
aa <- within(aa, z <- x + y - 2)
Run Code Online (Sandbox Code Playgroud)
或者,如果表达式是文本字符串的形式(您应该看看是否有其他方法来编写代码;评估任意文本字符串可能会导致很多问题):
aa$z <- eval(parse(text="x + y - 2"), aa)
Run Code Online (Sandbox Code Playgroud)
你或许应该阅读R上的一些基本教程其他比介绍至R作为,尽管写的是什么存在的$符号是更明智,更容易比理解attach/detach.在此期间尝试这个.
aa <- data.frame(x = c(2, 4, 6), y = c(3, 5, 7))
Run Code Online (Sandbox Code Playgroud)
这使:
> aa
x y
1 2 3
2 4 5
3 6 7
Run Code Online (Sandbox Code Playgroud)
然后输入:
aa$z <- (aa$x + aa$y) - 2
Run Code Online (Sandbox Code Playgroud)
这使:
> aa
x y z
1 2 3 3
2 4 5 7
3 6 7 11
Run Code Online (Sandbox Code Playgroud)
小智 5
您可以mutate从dplyr包中使用
library(dplyr)
aa <- aa %>% mutate(z = x+y-2)
Run Code Online (Sandbox Code Playgroud)
希望能帮助到你。