【发布时间】:2020-12-30 00:19:41
【问题描述】:
我有一个这样的data.frame:
df <- data.frame(cik = c(1800,1800,1800,1800,1800,1800,1800,1800,1800,1800,1800,1800,1800,1800,1800), date = c('2000/01/01','2000/02/01','2000/03/01','2000/04/01','2000/05/01','2000/06/01','2007/02/01','2007/02/01','2009/03/01','2009/04/01','2018/05/01','2018/06/01','2018/07/01','2018/08/01','2018/09/01'), value = c(2,1,3,6,5,4,7,5,9,3,9,8,7,6,8))
df <- df %>% mutate(date = as.Date(date, formate="%Y/%m/%d"))
df
cik date value
1800 2000-01-01 2
1800 2000-02-01 1
1800 2000-03-01 3
1800 2000-04-01 6
1800 2000-05-01 5
1800 2000-06-01 4
1800 2007-02-01 7
1800 2007-02-01 5
1800 2009-03-01 9
1800 2009-04-01 3
1800 2018-05-01 9
1800 2018-06-01 8
1800 2018-07-01 7
1800 2018-08-01 6
1800 2018-09-01 8
这是一个面板数据集,所以有更多的cik,这只是为了说明。
我想对这个数据集做两件事。首先,我想找到所有至少有 5 次连续观察的cik(在我的真实数据集中,我想要至少 24 次连续观察,但 5 只是为了说明目的。其次,我想保留所有行这是 24 次连续观察的一部分。所以我想要的最终结果是:
df
cik date value
1800 2000-01-01 2
1800 2000-02-01 1
1800 2000-03-01 3
1800 2000-04-01 6
1800 2000-05-01 5
1800 2000-06-01 4
1800 2018-05-01 9
1800 2018-06-01 8
1800 2018-07-01 7
1800 2018-08-01 6
1800 2018-09-01 8
我已经尝试了这个post 的解决方案,并结合了其他帖子但找不到答案。似乎当我转换为 yearmonth 时,以前的解决方案不再有效,任何帮助都会受到赞赏。提前致谢!
【问题讨论】:
-
欢迎来到 SO。我建议修改这个问题,因为它不清楚,您期望的输出与输入相同,不包括 2007 年和 2009 年。为什么这两年被排除在期望的输出之外?除此之外,还要显示您尝试过的内容(即代码),即使它不正确。
标签: r dataframe dplyr panel-data date-difference