数据
我有以下数据框:
dm <- data.frame(vehid = rep(c(2,3), each=10),
frameid=rep(c(7,10,11,13,6,5,14,13,12,1),2),
frame.diff = rep(c(NA,3,1,2,7,1,9,1,1,11), 2),
s.frame = rep(c(rep(0,9), 12), 2))
问题
对于 s.frame!=0
,我希望检测出所有从 frameid
到 s.frame
顺序的 frameid
并将它们赋值为 loop
,其余的则赋值为 .
。
期望输出
> dom
vehid frameid frame.diff s.frame loop
1 2 7 NA 0 loop
2 2 10 3 0 loop
3 2 11 1 0 loop
4 2 13 2 0 .
5 2 6 7 0 loop
6 2 5 1 0 loop
7 2 14 9 0 .
8 2 13 1 0 .
9 2 12 1 0 loop
10 2 1 11 12 loop
11 3 7 NA 0 loop
12 3 10 3 0 loop
13 3 11 1 0 loop
14 3 13 2 0 .
15 3 6 7 0 loop
16 3 5 1 0 loop
17 3 14 9 0 .
18 3 13 1 0 .
19 3 12 1 0 loop
20 3 1 11 12 loop
在上面的示例中,对于两个
vehid
,序列是1到12(frameid:s.frame)。输出显示序列为“loop”,其他所有内容为“.”。这应该有一个简单的解决方案,但我无法弄清楚。 如果有人提供一个
data.table
或plyr
的解决方案,我将不胜感激。 谢谢。