根据日期获取基于每日数据的最大值和最小值

时间:2017-10-24 15:33:49

标签: r

我有一个数据框,上面有很多天的数据,我想获得每天的最大和最小值,但我得到的相同df和开始显示小时值。原来的df看起来像这样:

                  date temperature
1: 2006-04-17 00:00:00    12.67833
2: 2006-04-17 01:00:00    12.14133
3: 2006-04-17 02:00:00    10.36833
4: 2006-04-17 03:00:00    10.78600
5: 2006-04-17 04:00:00    10.76967
6: 2006-04-17 05:00:00    10.92467

我得到了这个:

                  date      Max      Min
1: 2006-04-17 00:00:00 12.67833 12.67833
2: 2006-04-17 01:00:00 12.14133 12.14133
3: 2006-04-17 02:00:00 10.36833 10.36833
4: 2006-04-17 03:00:00 10.78600 10.78600
5: 2006-04-17 04:00:00 10.76967 10.76967
6: 2006-04-17 05:00:00 10.92467 10.92467

我正在使用下一个代码:

library(lubridate)
datatemp<- read.csv("04_2006.csv", header = T)
datatemp$date_time<-parse_date_time(datatemp$date_time,orders = "mdy HMS")
temp_aveg<-aggregate(list(temperature = datatemp$temp), 
          list(date = cut(datatemp$date_time, "1 hour")), 
          mean)
library(data.table)
Tmaxmin<-setDT(temp_aveg)[, list(Max=max(temperature), Min=min(temperature)), by=list(date)]

我不知道我失踪了什么?

1 个答案:

答案 0 :(得分:1)

您正在对日期和时间进行分组,而不仅仅是日期。 使用lubridatedplyr的解决方案。

library(lubridate)
library(dplyr)    

datatemp$date <- date(datatemp$date_time)
datatemp <- na.omit(datatemp)
output <- datatemp %>%
  group_by(date) %>%
  summarise(max_val = max(temperature),
            min_val = min(temperature))