【发布时间】:2021-02-14 15:35:04
【问题描述】:
在这个数据框中:
df <- data.frame(
ID = c("C", "B", "B", "B", NA, "C", "A", NA, "B", "B", "B")
)
我想使用 cumsum 对行进行分组,有两个条件:(i) cumsum 不应继续,如果 is.na(ID) 和 (ii) 如果 next 则不应继续ID 的值与之前的相同。我确实符合条件(i):
df %>%
group_by(grp = cumsum(!is.na(ID)))
# A tibble: 11 x 2
# Groups: grp [9]
ID grp
<chr> <int>
1 C 1
2 B 2
3 B 3
4 B 4
5 NA 4
6 C 5
7 A 6
8 NA 6
9 B 7
10 B 8
11 B 9
但我也不知道如何实现条件(ii)以获得期望的结果:
1 C 1
2 B 2
3 B 2
4 B 2
5 NA 2
6 C 3
7 A 4
8 NA 4
9 B 5
10 B 5
11 B 5
我用这个试过了,但我不工作:
df %>%
group_by(grp = cumsum(!is.na(ID) |!lag(ID,1) == ID))
【问题讨论】: