【发布时间】:2015-07-14 21:50:15
【问题描述】:
我正在尝试使用 dplyr 的 mutate 函数来创建一个新变量,该变量根据 ifelse 语句的值提取现有变量的相对值。这是我正在尝试实现的示例,希望能更好地说明问题:
id from_date fobs to_date
a 1999-01-05 0 1999-01-10
a 1999-01-10 0 1999-02-14
a 1999-02-14 1 2013-12-31
b 1999-03-19 0 1999-03-25
b 1999-03-25 1 2013-12-31
c 1999-02-14 0 1999-02-15
c 1999-02-15 1 2013-12-31
数据集按 ID 分组,我试图为“to_date”的每个观察值分配下一个观察值的起始日期,其中“fobs”的值等于 0,以及 2013-12- 31,其中值等于 1。
这是我最近尝试的代码,它对我不起作用,但我希望充分表达我想要通过 dplyr 包完成的工作:
qdat %>% group_by(id) %>% mutate(to_date = ifelse(fobs == 1,as.Date("2013-12-31"),as.Date(lead(qdat$date))))
不管怎样,这些是运行该代码的结果:
id from_date val fobs to_date
1 a 1999-01-05 5 0 NA
2 a 1999-01-10 9 0 NA
3 a 1999-02-14 4 1 16070
4 b 1999-03-19 7 0 NA
5 b 1999-03-25 14 1 16070
6 c 1999-02-14 10 0 NA
7 c 1999-02-15 11 1 16070
我已经查看了“在 R 中更快地进行数据操作的 dplyr 上手教程”(R-Bloggers)、R-Studio 关于“数据科学的语法和图形”的演示文稿,其中包含有关 dplyr 的更多信息,以及其他 stackoverflow一般关于 dplyr 包和相关单元格引用的问题,但我还没有找到解决这个问题的方法。为了记录,我对 R 也很陌生,所以如果我忽略了一些对其他人来说似乎非常明显的东西,我提前道歉。
【问题讨论】: