在我的分析的數據管理步驟中,我遇到了以下問題。分割時變量的值序列,有條件地編號
實際上,每個id
被記錄多達5次,並且我有一個感興趣的時變變量,tv = 1, 2, 3, 4
。假設我的數據是:
dat <- read.table(text = "
id tv
1 2
1 2
1 1
1 4
2 4
2 1
2 4
3 1
3 2
3 3
3 3
3 2",
header=TRUE)
我需要做的是創建兩個新組從tv
開始變量,以獲得:
id tv tv1 tv2 tv3 tv4 tv5 dur1 dur2 dur3 dur4 dur5
1 2 2 1 4 0 0 2 1 1 0 0
1 2 2 1 4 0 0 2 1 1 0 0
1 1 2 1 4 0 0 2 1 1 0 0
1 4 2 1 4 0 0 2 1 1 0 0
2 4 4 1 4 0 0 1 1 1 0 0
2 1 4 1 4 0 0 1 1 1 0 0
2 4 4 1 4 0 0 1 1 1 0 0
3 1 1 2 3 2 0 1 1 2 1 0
3 2 1 2 3 2 0 1 1 2 1 0
3 3 1 2 3 2 0 1 1 2 1 0
3 3 1 2 3 2 0 1 1 2 1 0
3 2 1 2 3 2 0 1 1 2 1 0
對於每個id
,在tv1
- tv5
我們具有的不同(非重複)記錄的有序序列tv
,而在dur1
-dur5
中,我們具有各個不同記錄存在於原始數據中的次數等dat
。
我真的不知道如何在這裏進行..任何幫助將不勝感激。
精彩!!非常感謝。 – Stezzo
大量使用'rle()'。我對'plyr'不太熟悉,但我認爲你可以簡化一點,對吧?例如,我認爲您不需要將矩陣轉換爲'data.frame',這樣做肯定會增加處理時間。 – A5C1D2H2I1M1N2O1R2T1
儘管這是一個很好的解決方案,並且以易於理解正在發生的事情的方式呈現。讓我更加註意'plyr'! – A5C1D2H2I1M1N2O1R2T1