我有使用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
答案 0 :(得分:1)
你的问题真的很远,远离完全可重复的例子的理想,但尝试这个大小:
library(dplyr)
library(lubridate)
Sensor_analysis %>%
mutate(hour = ceiling_date(Time, 'hour')) %>%
group_by(Homes, hour) %>%
summarize(hourly = mean(ppb)) -> Hourly
根据Time
变量的存储方式,您可能需要首先将其转换为POSIXct
或hms
才能生效