r - 每组相同值的最长连续计数
问题描述
我有一个如下的data.frame,我想VALUE
在组中观察到的变量中添加一个描述最长连续计数1的变量(即最长连续行,VALUE
每组1个)。
GROUP_ID VALUE
1 0
1 1
1 1
1 1
1 1
1 0
2 1
2 1
2 0
2 1
2 1
2 1
3 1
3 0
3 1
3 0
所以输出看起来像这样:
GROUP_ID VALUE CONSECUTIVE
1 0 4
1 1 4
1 1 4
1 1 4
1 1 4
1 0 4
2 1 3
2 1 3
2 0 3
2 1 3
2 1 3
2 1 3
3 1 1
3 0 1
3 1 1
3 0 1
任何帮助将不胜感激!
解决方案
使用dplyr:
library(dplyr)
dat %>%
group_by(GROUP_ID) %>%
mutate(CONSECUTIVE = {rl <- rle(VALUE); max(rl$lengths[rl$values == 1])})
这使:
# A tibble: 16 x 3 # Groups: GROUP_ID [3] GROUP_ID VALUE CONSECUTIVE <int> <int> <int> 1 1 0 4 2 1 1 4 3 1 1 4 4 1 1 4 5 1 1 4 6 1 0 4 7 2 1 3 8 2 1 3 9 2 0 3 10 2 1 3 11 2 1 3 12 2 1 3 13 3 1 1 14 3 0 1 15 3 1 1 16 3 0 1
或使用data.table:
library(data.table)
setDT(dat) # convert to a 'data.table'
dat[, CONSECUTIVE := {rl <- rle(VALUE); max(rl$lengths[rl$values == 1])}
, by = GROUP_ID][]
推荐阅读
- ios - iOS中“基于场景的UI”概念是什么意思
- javascript - HTML onSubmit / onClick 处理函数可以有除事件之外的另一个参数吗?
- android - Ionic Capacitor 应用程序被应用商店拒绝在启动时显示空白屏幕
- java - 如何在没有 mapr 客户端的情况下从 Java 程序连接到 MaprDB (Hbase)
- javascript - 您将如何从头开始创建 Set.prototype.add()?
- react-native - React Native Firestore 从帖子中获取评论
- html - 我可以将背景图像平铺一定次数吗?
- php - 如何使用 url 字符串中的数组来简化 php 代码
- python - How do set the amount of list elements equal to the number of characters in a string?
- javascript - 如何在 JavaScript 中显示与标签分开的帖子标签?