我有一个数据框,上面有很多天的数据,我想获得每天的最大和最小值,但我得到的相同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)]
我不知道我失踪了什么?
答案 0 :(得分:1)
您正在对日期和时间进行分组,而不仅仅是日期。
使用lubridate
和dplyr
的解决方案。
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))