我想知道是否有一個簡單的解決方案來解決以下問題:想象一下每個月的狀態信息是否有人工作(工作= 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