我想知道是否有一个简单的解决方案来解决以下问题:想象一下每个月的状态信息是否有人工作(工作= 1)或不工作(工作= 0)。这说明了原始数据:将每月状态数据汇总到序列数据
orig <- data.frame(id=c(rep(1:2, each=10)),
month.nr=c(rep(1:10,2)),
work.yn=c(0,1,1,0,0,0,1,1,1,0,
1,1,1,1,0,1,1,0,0,1))
id month.nr work.yn
1 1 0
1 2 1
1 3 1
1 4 0
1 5 0
1 6 0
1 7 1
1 8 1
1 9 1
1 10 0
2 1 1
2 2 1
2 3 1
2 4 1
2 5 0
2 6 1
2 7 1
2 8 0
2 9 0
2 10 1
我在寻找一个简单的函数或算法转换数据只保留启动和工作时段与由人(ID),该数字所得的序列数月之久。对于上面的示例所得到的数据是这样的:
id month.start.work month.end.work sequence.nr
1 2 3 1
1 7 9 2
2 1 4 1
2 6 7 2
2 10 10 3
由于我的数据量不是那么小的资源有效的解决方案是非常赞赏。
编辑:做一个循环(也许滞后函数)的任务将工作,但我正在寻找一个更加矢量化的解决方案。
非常感谢!非常直接,也是我需要的解决方案。新的rleid函数在这里帮助很大。 – drosophilus