【问题标题】:Get max and min values based of daily data based on dates根据基于日期的每日数据获取最大值和最小值
【发布时间】:2017-10-24 15:33:48
【问题描述】:

我有一个数据框,上面有很多天的数据,我想每天获得 hte 最大值和最小值,但我得到的 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)]

我不知道我错过了什么?

【问题讨论】:

  • 您是每天收到 mean 还是每隔 1 小时收到一次?
  • 平均值是每小时间隔,之后我想根据之前估计的24个数据点找到每天的最大值和最小值

标签: r


【解决方案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))

【讨论】:

  • 好吧,这部分有效,但在数据集的某些部分我有 NA 值并且我得到了这个结果,有没有办法避免获得 NA 值?
  • 查看更新后的答案na.omit。这将删除日期时间字段或温度字段中具有NA 值的所有行。
猜你喜欢
  • 1970-01-01
  • 2021-12-15
  • 2014-10-17
  • 1970-01-01
  • 2012-06-24
  • 1970-01-01
  • 2020-08-12
  • 2016-12-09
  • 2019-02-07
相关资源
最近更新 更多