r - 使用 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
...rle
但lag
我无法得到它!
解决方案
我们可以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
推荐阅读
- worhp - WORHP 在局部仿射函数上非常慢
- android - WebView 无法访问 android_res 但 android_asset 工作
- django - 为什么 save() 方法在 django 模型中有另一个带有 super 的 save() 方法
- python - 是否可以在 R 中开发或创建类似 python 的类?
- angular - 如何在不导入所有角度组件 SCSS 文件的情况下引用 SASS 函数
- javascript - Lodash递归函数超过最大堆栈大小
- c# - 在 C# 中获取 .csv 文件中的特定行和列值
- mysql - Mysql存储过程在循环内插入查询仅插入最后一个值
- java - 在不知道格式的情况下检查输入字符串是否是 java 中的时间戳/日期
- python - 如何使用 python (On Sanic) 获取请求机器的 IP 地址