問題描述
的start
和end
在frame_type
柱(下面)被車指車道改變的開始和結束。對於驅動程序的每個id
,我希望將所有行從開始到結束標記爲新列中的「LC」。如何標記r列中兩個特定字符值之間的所有行?
數據
foo <- data.frame(id = c(rep(1, 20), rep(2, 10)),
frame_type = rep(c(".", ".", ".",
"start", ".", "lcf", ".",
".", "end", "."), 3))
> foo
id frame_type
1 1 .
2 1 .
3 1 .
4 1 start
5 1 .
6 1 lcf
7 1 .
8 1 .
9 1 end
10 1 .
11 1 .
12 1 .
13 1 .
14 1 start
15 1 .
16 1 lcf
17 1 .
18 1 .
19 1 end
20 1 .
21 2 .
22 2 .
23 2 .
24 2 start
25 2 .
26 2 lcf
27 2 .
28 2 .
29 2 end
30 2 .
所需的輸出:
> foo
id frame_type LC
1 1 . .
2 1 . .
3 1 . .
4 1 start LC1
5 1 . LC1
6 1 lcf LC1
7 1 . LC1
8 1 . LC1
9 1 end LC1
10 1 . .
11 1 . .
12 1 . .
13 1 . .
14 1 start LC2
15 1 . LC2
16 1 lcf LC2
17 1 . LC2
18 1 . LC2
19 1 end LC2
20 1 . .
21 2 . .
22 2 . .
23 2 . .
24 2 start LC1
25 2 . LC1
26 2 lcf LC1
27 2 . LC1
28 2 . LC1
29 2 end LC1
30 2 . .
我尋覓了很多,但不能得到任何的想法來解決這個問題。我知道的最接近的是tidyr::fill()
,但在這種情況下不起作用。我想使用dplyr::group_by()
,因爲有幾個id
s。請幫忙。
謝謝! 'rle()'是非常有用的。 –