r - 通过引用 R 中的行号跨行汇总
问题描述
亲爱的数据操作向导,
我正在尝试以引用行号的方式总结我的数据框,但我找不到以整洁的方式完成它的方法。我的数据框看起来像这样。
# Sample data frame.
df <- data.frame(value = c(1,2,1,1,2,4,5,3,2))
value
1 1
2 2
3 1
4 1
5 2
6 4
7 5
8 3
9 2
我需要创建一个列,它表示TRUE
相应value
的数字以及接下来 4 个连续行中的数字是否都大于或等于 2。生成的数据框应如下所示:
value largerThan
1 1 FALSE
2 2 FALSE
3 1 FALSE
4 1 FALSE
5 2 TRUE
6 4 NA
7 5 NA
8 3 NA
9 2 NA
注意NA
最后四行中的四个largerThan
。这是因为这些行后面没有 4 个连续的行,因此无法评估它们。这就是让我感到困惑的原因,以及我不知道在使用tidyverse
语法时如何引用行号这一事实。这更简单for loops
,但我想不出等价物。
非常感谢您的建议!特别是如果您有tidyverse
解决dplyr
方案,因为这些是其余代码中使用的包。
解决方案
抱歉,对 tidyverse 不够熟悉。这是一个可能的data.table
解决方案。也许你可以把它翻译成 tidyverse
library( data.table )
setDT(df)
df[, largerThan := frollsum( value >= 2, n = 5, align = "left" ) > 4 ]
# value largerThan
# 1: 1 FALSE
# 2: 2 FALSE
# 3: 1 FALSE
# 4: 1 FALSE
# 5: 2 TRUE
# 6: 4 NA
# 7: 5 NA
# 8: 3 NA
# 9: 2 NA
推荐阅读
- c++ - 如果忘记在 C++ 中返回是未定义的行为,为什么编译器不强制执行它?
- excel - 使用 EXCEL 将十六进制字符转换为 ASCII 字符
- c++ - 尝试使用数组创建随机数生成器并获取标识符“i”是未定义的。任何人都可以看到问题吗?
- c++ - C++ 编译器如何在备用模板(部分)特化之间进行选择?
- java - 如何在 Spring 中显示未散列(但已编码)的用户密码
- ruby-on-rails - 如何删除 Rails 中 Url 末尾生成的不需要的单词
- python - 在 Django 中创建一个依赖于另一个模型的模型 ChoiceField
- sql - 如何简化下面的 SQL 并提高性能?
- python - 在 scikit-learn make_circle() 中添加高斯噪声 = 0.05 是什么意思?它将如何影响数据?
- microsoft-graph-api - 为什么通过 MS Graph 向外部(b2b/guest)用户发送的邀请电子邮件没有发送到 TO+CC 地址(不再)?