在我的分析的数据管理步骤中,我遇到了以下问题。分割时变量的值序列,有条件地编号
实际上,每个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