【发布时间】:2018-03-20 16:02:27
【问题描述】:
正如标题中所说,我有一个如下所示的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
还有一些其他情况比这更短或更长的时间窗口,只是为了说明。
我想对这个数据集做两件事,首先,在这里找到所有至少连续观察5次的id,这可以通过以下解决方案here来完成。其次,我只想在第一步选择的id 的至少连续五行中保留这些观察结果。理想的结果是:
df
id time
1 1 2000
2 1 2001
3 1 2002
4 1 2003
5 1 2004
我可以使用 for 循环和 diff 函数编写一个复杂的函数,但是如果 id 有一个更大的数据集,那么这在编写函数和获取结果时可能会非常耗时。但这似乎不像 R,我相信应该有一个或两个行的解决方案。
有人知道如何实现吗?您的时间和知识将不胜感激。提前致谢。
【问题讨论】:
-
是的,我希望它是数字@bouncyball
-
我复制你的代码并重新运行它,只有 #A tibble: 0 x 3 # Groups: id, grp [0] # ... with 3 variables: id
, time , grp ,我错过了什么重要的东西吗?不熟悉 tidyr