【发布时间】:2018-04-18 06:42:14
【问题描述】:
我正在尝试使用rle()(或其他相关函数)解决 R 的问题,但不知道从哪里开始。问题如下 - foo、bar 和 baz 和 qux 可以位于三个位置之一 - A、B 或 C。
他们的第一个位置总是A,最后一个位置总是C,但它们之间的位置是随机的。
我的目标是消除第一个 A 或 A的第一个序列,最后一个 C 或 C的最后一个序列。例如:
> foo
position
1 A
2 A
3 A
4 B
5 B
6 A
7 B
8 A
9 C
10 C
> output(foo)
position
4 B
5 B
6 A
7 B
8 A
> bar
position
1 A
2 B
3 A
4 B
5 A
6 C
7 C
8 C
9 C
10 C
> output(bar)
position
2 B
3 A
4 B
5 A
> baz
position
1 A
2 A
3 A
4 A
5 A
6 C
7 C
8 C
9 C
10 C
> output(baz)
NULL
> qux
position
1 A
2 C
3 A
4 C
5 A
6 C
> output(qux)
position
2 C
3 A
4 C
5 A
Basic rle() 会告诉我有关序列及其长度的信息,但它不会保留行索引。应该如何解决这个问题?
> rle(foo$position)
Run Length Encoding
lengths: int [1:6] 3 2 1 1 1 2
values : chr [1:6] "A" "B" "A" "B" "A" "C"
【问题讨论】:
标签: r dplyr data.table run-length-encoding