【发布时间】:2015-03-23 05:03:26
【问题描述】:
我有一个这样的数据集,
dat <- data.frame(d1=c(0,1,0,1,0),
d2=c(0,1,1,1,0),d3=c(1,0,1,1,0),
d4=c(1,0,0,0,0),d5=c(1,1,1,0,0))
dat
d1 d2 d3 d4 d5
1 0 0 1 1 1
2 1 1 0 0 1
3 0 1 1 0 1
4 1 1 1 0 0
5 0 0 0 0 0
如果我认为每一行都是针对个人的一组跑步。我想根据运行计算一个名为“indicator”的指标变量。例如,个体 1 运行是 (0,0,1,1,1),因为这个反向长度的运行,值第一个 1 是 3。另一方面,对于个体 3 运行是 (0,1,1,0, 1),值前1,s的向后运行长度为1。所需的数据集是这样的。
d1 d2 d3 d4 d5 indicator
0 0 1 1 1 3
1 1 0 0 1 1
0 1 1 0 1 1
1 1 1 0 0 3
0 0 0 0 0 0
这种方式我试过了,
indicator <- NULL
for(i in 1:5){
indicator[i] <- rev(sequence(rle(dat[i,])$lengths))[1]
}
indicator[1:5]
cbind(dat, indicator=indicator[1:5])
但这给出了这样的数据,
d1 d2 d3 d4 d5 indicator
1 0 0 1 1 1 3
2 1 1 0 0 1 1
3 0 1 1 0 1 1
4 1 1 1 0 0 2
5 0 0 0 0 0 5
谁能帮我解决这个问题?
【问题讨论】:
标签: r run-length-encoding