我有一个数据框架,其中一个列包含一些连续的重复项。我希望保留连续重复的行(任意长度>1)。我更喜欢dplyr或data.table中的解决方案。
示例数据:
a <- seq(10,150,10)
b <- c("A", "A", "B", "C", "C", "A", "B", "B", "B", "C", "A", "C", "D", "E", "E")
df <- tibble(a, b)数据:
# A tibble: 15 x 2
a b
<dbl> <chr>
1 10 A
2 20 A
3 30 B
4 40 C
5 50 C
6 60 A
7 70 B
8 80 B
9 90 B
10 100 C
11 110 A
12 120 C
13 130 D
14 140 E
15 150 E 因此,我希望在列b中保留连续重复的行。
预期成果:
# A tibble: 9 x 2
a b
<dbl> <chr>
1 10 A
2 20 A
4 40 C
5 50 C
7 70 B
8 80 B
9 90 B
14 140 E
15 150 E 谢谢!
发布于 2019-10-21 14:17:32
由于您还有data.table标记,所以我喜欢将data.table::rleid函数用于这些任务,即
library(dplyr)
df %>%
group_by(grp = data.table::rleid(b), b) %>%
filter(n() > 1)这给了,
A tibble: 9 x 3#组: grp,b 4 a a b grp 1 10 A 1 2 2 0 A 1 2 2 0 A 1 40 C 3 4 50 C 3 5 70 B 5 80 B 5 5 7 90 B 5 5 140 E 10 9 150 E 10
https://stackoverflow.com/questions/58488164
复制相似问题