【发布时间】:2018-12-30 04:41:19
【问题描述】:
我在不同的城市树种上以 10 分钟的高时间分辨率测量了温度,应该比较它们的反应。因此,我正在研究特别是高温期。我未能在我的数据集上执行的任务是从最大值中选择完整的天数。例如。一次测量值高于 30°C 的日子应该完全从我的数据框中子集。 您可以在下面找到一个可重现的示例,该示例应该可以说明我的问题:
在我的Measurings 数据框中,我计算了一个列,指示单个测量值是高于还是低于 30°C。我想使用该列来告诉其他函数他们应该选择一天还是不生成New Dataframe。当一天中的任何时间值高于 30°C 时,我希望将其按日期从 00:00 到 23:59 包含在 New Dataframe 中以进行进一步分析。
start <- as.POSIXct("2018-05-18 00:00", tz = "CET")
tseq <- seq(from = start, length.out = 1000, by = "hours")
Measurings <- data.frame(
Time = tseq,
Temp = sample(20:35,1000, replace = TRUE),
Variable1 = sample(1:200,1000, replace = TRUE),
Variable2 = sample(300:800,1000, replace = TRUE)
)
Measurings$heat30 <- ifelse(Measurings$Temp > 30,"heat", "normal")
Measurings$otheroption30 <- ifelse(Measurings$Temp > 30,"1", "0")
该示例生成了一个与我的数据结构类似的 Dataframe:
head(Measurings)
Time Temp Variable1 Variable2 heat30 otheroption30
1 2018-05-18 00:00:00 28 56 377 normal 0
2 2018-05-18 01:00:00 23 65 408 normal 0
3 2018-05-18 02:00:00 29 78 324 normal 0
4 2018-05-18 03:00:00 24 157 432 normal 0
5 2018-05-18 04:00:00 32 129 794 heat 1
6 2018-05-18 05:00:00 25 27 574 normal 0
那么我如何子集化以获得一个 New Dataframe 其中至少有一个条目被指示为“热”的所有天数?
我知道,例如 dplyr:filter 可以过滤单个条目(示例头部的第 5 行)。 但我怎么知道要花一整天 2018-05-18 呢?
我对使用 R 分析数据非常陌生,因此我将不胜感激有关我的问题的有效解决方案的任何建议。 dplyr是我在相当多的任务中一直使用的,但我对任何可行的方法持开放态度。
非常感谢,康拉德
【问题讨论】:
标签: r datetime dplyr time-series posixct