33

我想使用来自另一个变量的公式为数据框创建一个新列。
示例:
我有一个数据集“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 

请你帮助我好吗..

4

3 回答 3

43

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

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

或者

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

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

aa$z <- eval(parse(text="x + y - 2"), aa)
于 2013-09-25T08:50:50.363 回答
9

除了An Introduction to R之外,您可能应该阅读一些关于 R 的基本教程,因为尽管那里写了什么,但符号比. 在此期间试试这个。$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

这使:

> aa
  x y  z
1 2 3  3
2 4 5  7
3 6 7 11
于 2013-09-25T08:31:58.400 回答
6

您可以mutate从包dplyr中使用

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

希望能帮助到你。

于 2017-06-04T07:50:27.523 回答