正如标题所说,我有data.frame像下面,只保留观察连续
df<-data.frame('id'=c('1','1','1','1','1','1','1'),'time'=c('1998','2000','2001','2002','2003','2004','2007'))
df
id time
1 1 1998
2 1 2000
3 1 2001
4 1 2002
5 1 2003
6 1 2004
7 1 2007
还有其他一些情况下有比这更短或更长的时间窗口,只是为了说明的缘故。
我想要做的两件事情有关这组数据,首先,找到所有这些id
有至少五个连续的观测位置,这可以通过以下方法解决here完成。其次,我只想保留中至少连续五行的id
第一步选择的观察值。理想的结果是:
df
id time
1 1 2000
2 1 2001
3 1 2002
4 1 2003
5 1 2004
我可以使用循环和diff
功能编写一个复杂的功能,但是这可能是很长的时间都在写函数获得的结果耗时,如果我有一个更大的数据与设置很多,如果id
。但是这看起来不像R,我确实认为应该有一个或两个解决方案。
任何人都知道如何做到这一点?您的时间和知识将深受赞赏。提前致谢。
是的,我希望它是数字@bouncyball –
我复制你的代码,并重新运行它,就只是#A tibble:0×3个 #组:身份证,GRP [0] #...有3个变量:id ,时间,grp ,我是否缺少重要的东西?不熟悉'tidyr' –