首页 > 解决方案 > 使用 dplyr 仅计算序列第一次出现的次数

问题描述

我正在努力完成这项任务:我有这个数据框:

df <- structure(list(col1 = c("A", "A", "A", "B", "A", "A", "C", "A"
)), class = "data.frame", row.names = c(NA, -8L))

  col1
1    A
2    A
3    A
4    B
5    A
6    A
7    C
8    A

我只想A在第一个序列中获得计数。

预期答案是 3!

更新:预期不工作输出:

df %>% 
  summarise(first_sequence_A = sum(col1=="A")) 
# not working because counting all A's

# resluting in:
  first_sequence_A
1                6

expected:
  first_sequence_A
1                3

我更喜欢一个解决方案dplyr

我试过了,,,cumsum...rlelag我无法得到它!

标签: rdplyr

解决方案


我们可以rle使用base R

with(rle(df$col1 == "A"), lengths[values][1])
[1] 3

或者在dplyr语法中

df %>% 
   summarise(first_sequence_A = with(rle(col1 == "A"), lengths[values][1]))
  first_sequence_A
1                3

推荐阅读