【发布时间】:2018-02-05 12:13:41
【问题描述】:
我有一个包含三列的数据框,其中第一列是 ID,第二列表示年份,第三列是与该年份的 ID 关联的值:
df.in <- data.frame("id"=c(1, 1, 1, 1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2, 2, 2),
"yr"=c(2005,2006,2007,2009,2010,2011,2012,2013,2006,2007,2008,2009,2010,2011,2012,2013,2015,2016),
"vl"=c(5, 6, 7, 8, 10, 1, 2, 3, 6, 8, 10, 1, 2, 3, 4, 5, 7, 9))
如您所见,给定 ID 的年份之间存在一些差距。对于ID==1,有两个连续年份的“组”分别有 3 行和 5 行。对于ID==2,分别为 8 和 2。
是否有一种dplyr-方式来生成一个 data.frame,它只包含每个 ID 具有最多行数的组,这些行彼此连续?换句话说,我想要一个具有5+8 行的数据框:
df.in <- data.frame("id"=c(1, 1, 1, 1, 1, 2, 2, 2, 2, 2, 2, 2, 2),
"yr"=c(2009,2010,2011,2012,2013,2006,2007,2008,2009,2010,2011,2012,2013),
"vl"=c(8, 10, 1, 2, 3, 6, 8, 10, 1, 2, 3, 4, 5))
编辑:再多一个测试用例:
df.in <- data.frame("id"=c(1, 1, 1, 1, 1, 1, 1, 1),
"yr"=c(2005,2006,2007,2008,2009,2010,2011,2012),
"vl"=c(5, 6, 7, 8, 10, 1, 2, 3))
应该给出与输入相同的输出。
【问题讨论】: