【问题标题】:Calculating specified Hourly Averages in R在 R 中计算指定的每小时平均值
【发布时间】:2017-06-17 12:41:42
【问题描述】:

我有使用 NO2 传感器收集的 NO2 实时数据。数据每秒记录 48 小时 NO2。在不同的家庭中测量了 48 小时的 NO2。有超过 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 am 成为 12:01 am - 1:00 am 的平均值,并继续这一趋势。

我尝试了多种方法,但我还没有弄清楚如何做到这一点。 group_by 和 summarise 函数为我提供了整个数据集中的平均时间(例如凌晨 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

【问题讨论】:

  • 我猜你可以使用cut。也看看there
  • 您能否提供数据的复制和粘贴版本?只需运行dput(head(Sensor_analysis))
  • @RoyalTS 我在 R 中运行了 dput(head(Sensor_analysis)),接下来我该怎么做才能让它在这个平台上复制和粘贴?
  • 只需编辑您的问题并将其粘贴到那里。

标签: r


【解决方案1】:

您的问题与完全可重现示例的理想相距甚远,但请尝试以下大小:

library(dplyr)
library(lubridate)

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

根据您的 Time 变量的存储方式,您可能首先必须将其转换为 POSIXcthms 才能正常工作

【讨论】:

  • 谢谢@RoyalTS,它成功了。我想知道如何计算每小时平均值。运行代码后,我看到它给出了每小时(例如 1:00、2:00)的平均值。这是 1:00-1:59 的平均浓度吗?我将结果与我在 Excel 中手动执行的结果进行了比较,但结果有所不同。另一个问题,我希望其他变量在我们创建的新数据集中。原始数据集有 10 列(Homes、Time、ppb、Heat、Ventilation、Cook、TRAP、Dst_Hwy、Dst_Int、Trucks)。
猜你喜欢
  • 2021-05-09
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-12-23
  • 1970-01-01
  • 1970-01-01
  • 2016-02-19
相关资源
最近更新 更多