gpt4 book ai didi

r - 连续值高于阈值的位置和值

转载 作者:行者123 更新时间:2023-12-04 12:40:51 25 4
gpt4 key购买 nike

我需要找到我的数据连续几天达到阈值的位置。我正在寻找高于阈值的 4 个连续观察值。我想返回满足这些条件的系列的第一个观察值的位置。

这是一个示例数据集:

eg = structure(list(t.date = structure(c(1L, 2L, 11L, 12L, 13L, 14L, 
15L, 16L, 17L, 18L, 3L, 4L, 5L, 6L, 7L, 8L, 9L, 10L), .Label = c("4/30/11",
"5/1/11", "5/10/11", "5/11/11", "5/12/11", "5/13/11", "5/14/11",
"5/15/11", "5/16/11", "5/17/11", "5/2/11", "5/3/11", "5/4/11",
"5/5/11", "5/6/11", "5/7/11", "5/8/11", "5/9/11"), class = "factor"),
t.avg = c(4L, 4L, 5L, 6L, 10L, 18L, 18L, 18L, 18L, 12L, 10L,
10L, 8L, 8L, 9L, 10L, 6L, 5L)), .Names = c("date", "avg"
), row.names = c(NA, -18L), class = "data.frame")

我想要平均值满足条件的日期(4 天平均值 >17)
一种方法:
eg$date %in% eg$date[which(eg$avg > 17)]
# [1] FALSE FALSE FALSE FALSE FALSE TRUE TRUE TRUE TRUE FALSE FALSE FALSE
# [13] FALSE FALSE FALSE FALSE FALSE FALSE

在这种情况下,我可以采用 TRUE 的第一种情况。作为答案,但如果第二个、第三个或第四个不是 TRUE,这将不起作用

我需要条件为 TRUE 的第一个日期:
eg$date[which(eg$avg > 17)]
# [1] 5/5/11 5/6/11 5/7/11 5/8/11

以及系列中第一个观察的位置:
which(eg$avg > 17)
# [1] 6 7 8 9

我发现了相关问题,但我无法根据我的需要调整方法。

非常感谢。

最佳答案

library(zoo)
# Get the index value
xx <- which(rollapply(eg$avg,4, function(x) min(x))>17)[1]
# Get the date
eg$date[xx]

关于r - 连续值高于阈值的位置和值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27072303/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com