首页 > 解决方案 > 使用 dplyr r 在列中更改值时提取行

问题描述

每次 b 发生变化时,我都会尝试提取行:

   a b
1  1 A
2  4 A
3  5 A
4  3 B
5  3 B
6  2 B
7  4 B
8  6 A
9  2 A
10 4 C
11 1 C

所以我期待的结果是:

  a b
1 1 A
2 3 B
3 6 A
4 4 C

我想在 dplyr 中使用 lag 函数来提取 b 的先前值不同但无法做到的行...

任何帮助都会非常感激!!

标签: rdataframedplyrrowextract

解决方案


一种选择可能是:

df %>%
 group_by(rleid = with(rle(b), rep(seq_along(lengths), lengths))) %>%
 slice(1) 

      a b     rleid
  <int> <chr> <int>
1     1 A         1
2     3 B         2
3     6 A         3
4     4 C         4

推荐阅读