我在R中使用dplyr对数据进行了分组。我希望在每个组中最后一次观察('B')等于或大于1(1,2,3或4)之后找到'date' '一个')。换句话说,1/2/3/4已经变为0的'日期'。如何查找R中最后一次观察到的日期?
简单地找到第一次出现0的日期将不会像在某些组中那样工作1/2/3/4开关为0,然后再回来,并没有给出我想要的结果。
我希望这个'日期'为每个组在新列('date.after')中给出。
例如,给定的下述数据样本,通过分组A(这已被简化,我的数据实际上是由3个变量分组):
A B date
a 2 1
a 2 2
a 1 5
a 0 8
b 3 1
b 3 4
b 3 6
b 0 7
b 0 9
c 1 2
c 1 3
c 1 4
我想实现如下:
A B date date.after
a 2 1 8
a 2 2 8
a 1 5 8
a 0 8 8
b 3 1 7
b 3 4 7
b 3 6 7
b 0 7 7
b 0 9 7
c 1 2 NA
c 1 3 NA
c 1 4 NA
我希望这是有道理的,非常感谢你的帮助! 这篇帖子可能看起来很熟悉,我刚才问了一个非常类似的问题:
How to find the last occurrence of a certain observation in grouped data in R?
尼斯,这里是一个等价基本R解决方案do.call(rbind,lapply(split(data,data $ A),function(x){x $ date.after = x $ date [tail(which(x $ B> = 1),1) + 1]; x}))' –
@VeerendraGadekar,谢谢,这是一个很好的建议,除非你需要用'tail(...,1)'替换'last',因为'last'是'dplyr'中的函数,而'data.table'。 –