计算R中指定的每小时平均值

时间:2017-06-17 04:35:23

标签: r

我有使用NO2传感器收集的NO2的实时数据。该数据每秒记录48小时NO2。在不同的家中测量NO2 48小时。有超过50,000行和三列。 Here a snapshot.

Homes   Time      ppb
Home 1  12:00 AM    6
Home 1  12:01 AM    6
Home 1  12:02 AM    7
Home 1  12:03 AM    6
Home 1  12:04 AM    7
Home 1  12:05 AM    9
Home 1  12:06 AM    8
Home 2  12:00 AM    2
Home 2  12:01 AM    3
Home 2  12:02 AM    4
Home 2  12:03 AM    1
Home 2  12:04 AM    6
Home 2  12:05 AM    4
Home 2  12:06 AM    8

我想创建一个新的数据集,它将每小时(上午12点,上午1点等)平均NO2而不是每秒。我想让凌晨1点成为上午12:01 - 凌晨1点的平均值,继续这个趋势。

我尝试了很多方法,但我还没想到如何做到这一点。 group_by和summarize函数给出了整个数据集中的平均时间(例如,凌晨1点,凌晨2点),但我希望根据家庭数量计算每小时平均值。

我尝试使用一个不起作用的循环:

Avg = data.frame(Sensor_analysis)    
head(Avg)    
Hourly = rep(0, 48)    
for (i in 1:48) {
   Hourly[i] = mean(Avg$ppb[60*(i-1)+1:60*i])
}
Hourly

1 个答案:

答案 0 :(得分:1)

你的问题真的很远,远离完全可重复的例子的理想,但尝试这个大小:

library(dplyr)
library(lubridate)

Sensor_analysis %>%
    mutate(hour = ceiling_date(Time, 'hour')) %>%
    group_by(Homes, hour) %>%
    summarize(hourly = mean(ppb)) -> Hourly

根据Time变量的存储方式,您可能需要首先将其转换为POSIXcthms才能生效