我正在处理地下水数据(4个月内间隔2小时),需要找到每日最高和最低地下水位,以及这些值的小时。
下面是我的数据的一个例子
| date_time:dttm|level_m:dbl|日期:日期|hour:int|
| - ------|- ------|- ------|- ------|
| 2019 -06-14 00:00:00|无|2022年6月14日|无|
| 2019 -06-14 02:00:00| -0.004 |2022年6月14日|第二章|
| 三2022年6月14日04时00分| -0.012 |2022年6月14日|四个|
| 4 2022年6月14日06时00分|0.003|2022年6月14日|六个|
| 2019 -06-14 08:00:00|千分之一|2022年6月14日|八个|
| 2019 -06-14 10:00:00|0.878|2022年6月14日|十个|
| 7 2022年6月14日12时00分|0.88|2022年6月14日|十二|
| 8月2022年6月14日14时00分|0.873|2022年6月14日|十四|
| 2019 -06-14 16:00:00|0.872|2022年6月14日|十六|
| 2019 -06-14 18:00:00|零点八七五|2022年6月14日|十八|
| 11日2022年6月14日20时00分|0.876|2022年6月14日|二十个|
| 2019 -06-14 22:00:00|0.887|2022年6月14日|二十二|
我从date_time创建了日期和小时变量,并且一直使用聚合。我使用了max_daily_lvl〈- aggregate(data$level_m ~ data$date,FUN =“max”)
这可以很好地找到最大的每日价值,但不返回我需要的小时。
我继续left_join 'max_daily_lvl' to 'data',但它连接了数据中每个date_time的所有等效的'level_m'值(有很多)。
如果我使用,max_daily_lvl〈- aggregate(data$level_m ~ data$date_time,FUN =“max”),它当然只是返回次每日值,而不是每日值。
谢谢你的忠告
2条答案
按热度按时间ukdjmx9f1#
使用
dplyr
v. 1.1.0,你可以尝试以下操作。使用summarize
,你可以选择最小值和最大值level_m
,并使用which.min
和which.max
获得hour
。请注意,这将只给予一个小时的结果,即使最小值或最大值在多行中相等。使用上面的示例数据,输出将是:
yhived7q2#
另一个选择是使用我的包timeplyr中的
time_summarise()
,它可以计算任何时间聚合的摘要。创建于2023-03-26带有reprex v2.0.2