我正在尝试使用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”的观察值分配下一个观察值的from 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-Bloggers上的“快速数据操作的实践dplyr教程”,R-Studio关于“数据科学的语法和图形”的演示,以及其他与dplyr包和相对单元格引用有关的stackoverflow问题,但我还没有找到解决这个问题的方法。值得一提的是,我也很新于R,所以如果我忽略了任何其他人看起来非常明显的东西,我提前表示歉意。