【发布时间】:2018-03-11 10:58:54
【问题描述】:
我有一个数据集:
> d <- seq.Date(as.Date("2017/01/01"), as.Date("2017/03/01"), by = "month")
> df <- data.frame(x1 = d, x2 = rev(d), x3 = 1:3)
> df
x1 x2 x3
1 2017-01-01 2017-03-01 1
2 2017-02-01 2017-02-01 2
3 2017-03-01 2017-01-01 3
我想创建一个新变量 x4,当 x1 == x2 时它等于 x3。
到目前为止,这是我拥有的最佳解决方案,但有点神秘。
> library(dplyr)
> df %>% mutate(x4 = max( x3 * (x1 == x2) ) )
x1 x2 x3 x4
1 2017-01-01 2017-03-01 1 2
2 2017-02-01 2017-02-01 2 2
3 2017-03-01 2017-01-01 3 2
有没有更有效或更易读的方法?
【问题讨论】:
-
我不明白所需输出的逻辑。
x4的第 2 行不应该是2和其他所有NA,因为x1 != x2对于第 1 行和第 3 行? -
不,我正在尝试将 2 月份 X3 的值复制到 X4 的所有值。
-
这不是
df %>% mutate(x4 = x3[x1 == x2])吗? -
是的,很好的答案。
标签: r