r - 如何计算连续出现低于R中的阈值
问题描述
我有以下数据:
> dput(s1[1:10,])
structure(list(V1 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), V2 = c(0,
0.55, 0.9, 3.125, 5, 19.96666667, 12.25, 35.15, 5.4, 58.58)),
na.action = structure(260:270, .Names = c("260",
"261", "262", "263", "264", "265", "266", "267", "268", "269",
"270"), class = "omit"), row.names = c("33", "317", "6",
"202","250", "185", "28", "251", "218", "116"), class =
"data.frame")
当 V2(第二列)在至少 3 个连续时间步长内低于 1 时,我想计算连续出现的次数。
所以在上面的例子中,答案应该是 1。
如果我重新采样上述数据:
b<-a[sample(1:nrow(a),replace=T),]
dput(b)
structure(list(V1 = c(1, 1, 1, 1, 1, 1, 1, 1, 1, 1), V2 = c(5,
35.15, 0.55, 19.96666667, 0.55, 19.96666667, 0.55, 3.125, 0.9,
0.55)), na.action = structure(260:270, .Names = c("260",
"261","262", "263", "264", "265", "266", "267", "268", "269",
"270"), class = "omit"), row.names = c("250", "251", "317",
"185","317.1", "185.1", "317.2", "202", "6", "317.3"), class =
"data.frame")
在这里,答案应该是 0。
如何使用 R 中的一行命令获取这些值?这可能吗?
我会很感激任何帮助。
解决方案
使用rle
:
with(rle(s1$V2 < 1), sum(lengths[values] >= 3))
#[1] 1
推荐阅读
- elixir - Phoenix 会话调试/配置
- javascript - 如何独立于浏览器视口导出/保存 SVG(例如,使用预定义的高度和宽度)
- python - 下载适用于 Mac 的 Python 32 位
- swift - Firebase 分析已停用。未记录事件。未显示广告
- c - MPI基础图像处理——使用MPI进行卷积
- javascript - Angular 6计时器问题
- c++ - 未安装 QT C++ 模块
- swagger - 如何在 OpenAPI (Swagger) 中指定默认的 XML 元素文本?
- c - 在 curses 模式之外使用 getch 的便携性如何?
- c# - 使用 LINQ,为什么 Include() 在过去工作时不能有 lambda 表达式?