【问题标题】:R aggregate a dataframe by hours from a date with time fieldR 从带有时间字段的日期开始按小时聚合数据帧
【发布时间】:2015-07-06 08:17:47
【问题描述】:

我对 R 比较陌生,但我对 Excel 和 T-SQL 非常熟悉。

我有一个简单的数据集,它有一个带时间的日期和一个与之关联的数值。我想做的是按一天中的时间汇总数值。我在 R 中找到了一些使用时间类型的资源,但我希望找到一个类似于提供的 excel 的解决方案(我可以在其中调用一个函数并传入我的日期/时间数据并让它返回小时当天)。

任何建议将不胜感激 - 谢谢!

【问题讨论】:

  • 您能否发布起始数据和预期输出,以便获得更好的帮助。另见:stackoverflow.com/questions/5963269/…
  • 能否请您发布一个数据示例。
  • 谢谢大家 - 当然可以:输入日期时间 |价值 2015 年 3 月 14 日 12:00:00 | 23 2015 年 3 月 14 日 13:00:00 | 24 2015 年 3 月 15 日 12:00:00 | 22 2015 年 3 月 15 日 13:00:00 | 40 输出时间 |平均值 12:00:00 | 34 13:00:00 | 44

标签: r dplyr lubridate


【解决方案1】:
library(readr)
library(dplyr)
library(lubridate)


df <- read_delim('DateTime|Value
3/14/2015 12:00:00|23
3/14/2015 13:00:00|24
3/15/2015 12:00:00|22
3/15/2015 13:00:00|40',"|")

df %>% 
  mutate(hour_of_day = hour(as.POSIXct(strptime(DateTime, "%m/%d/%Y %H:%M:%S")))) %>% 
  group_by(hour_of_day) %>% 
  summarise(meanValue = mean(Value))

细分:

DateTime(字符)列转换为格式化时间,然后使用lubridate 中的hour() 提取该小时值并将其放入名为hour_of_day 的新列中。

> df %>% 
       mutate(hour_of_day = hour(as.POSIXct(strptime(DateTime, "%m/%d/%Y %H:%M:%S"))))
Source: local data frame [4 x 3]

            DateTime Value hour_of_day
1 3/14/2015 12:00:00    23          12
2 3/14/2015 13:00:00    24          13
3 3/15/2015 12:00:00    22          12
4 3/15/2015 13:00:00    40          13

group_by(hour_of_day) 设置通过summarise(...) 调用计算mean(Value) 的组。

这给出了结果:

  hour_of_day meanValue
1          12      22.5
2          13      32.0

【讨论】:

  • 感谢回忆,这正是我想要的!非常感谢!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-03-25
  • 2014-06-17
  • 1970-01-01
  • 2015-05-18
  • 2021-08-24
  • 2021-12-19
  • 1970-01-01
相关资源
最近更新 更多