如何将两个变量的每小时数据转换为每日平均值?

发布于 2025-02-06 14:27:02 字数 1158 浏览 1 评论 0原文

我正在努力观察PM 10数据,每天平均3年。我已经处理了空气质量数据,但是,我的温度和风速数据小时为止。如何计算每日平均水平并结合这两个数据?

例如:

日期温度wind_speed
1/01/2018 1:0018.81.9
1/01/2018 2:00 2:0018.71.5
1/01/2018 3:00 3:0018.61.6
1/01/01/2018 4:0018.5 1.0 1.0
1/01/2018 5:0018.11.2

...一直到1/1/2021 00:00(26304 OBS)。

我尝试过

StartDateTime = dmy_hm("-01-01-2018 01:00")
EndDateTime <- dmy_hm("01-01-2021 00:00")
DF <- data.frame(DateTime = c(seq.POSIXt(StartDateTime, EndDateTime, by = "hour"),
                              seq.POSIXt(StartDateTime, EndDateTime, by = "hour")),
                 check.rows = TRUE, fix.empty.names = TRUE, 
              )
head(DF)
  • 它将DF更改为一个变量和52608 OBS。我在这个阶段超级迷路。

我的PM10数据是一个时间序列[1:1096] - 原子向量。关于如何在温度和风速上将每小时数据更改为每日平均水平的任何建议,以便我可以将其与PM10数据相结合?

数据:dput(head(sample_data_1))

I am working on observing PM 10 data on a daily average for 3 years. I have already worked on my air quality data however, my temperature and wind speed data are hourly. How can I calculate the daily average and combine both of these data?

Eg:

datetemperatureWind_Speed
1/01/2018 1:0018.81.9
1/01/2018 2:0018.71.5
1/01/2018 3:0018.61.6
1/01/2018 4:0018.5 1.0
1/01/2018 5:0018.11.2

... all the way until 1/1/2021 00:00 (26304 obs).

I tried

StartDateTime = dmy_hm("-01-01-2018 01:00")
EndDateTime <- dmy_hm("01-01-2021 00:00")
DF <- data.frame(DateTime = c(seq.POSIXt(StartDateTime, EndDateTime, by = "hour"),
                              seq.POSIXt(StartDateTime, EndDateTime, by = "hour")),
                 check.rows = TRUE, fix.empty.names = TRUE, 
              )
head(DF)
  • It changed the DF into one variable and 52608 obs. I am super lost at this stage.

My pm10 data has is a time series [1:1096]- atomic vector. Any suggestions on how I can change the hourly data into daily average for both temperature and wind speed so I can combine it with the pm10 data?

data: dput(head(sample_data_1))

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

陌路终见情 2025-02-13 14:27:02

我假设您的数据看起来像df2(并且您使用lubridate),

library(tidyverse)
library(lubridate)
StartDateTime <- dmy_hm("-01-01-2018 01:00")
EndDateTime <- dmy_hm("01-01-2021 00:00")
date_hour_seq <- seq.POSIXt(StartDateTime, EndDateTime, by = "hour")
DF2 <- data.frame(DateTime = date_hour_seq,
                  temperatur = rnorm(length(date_hour_seq), 10),
                  wind = rnorm(length(date_hour_seq), 1, .1))

那么您可以在group_by <group_by中创建一个新的date变量/代码>和
使用汇总在2022-06-10创建的平均值

DF2 %>% group_by(date = date(DateTime)) %>%
  summarise(temperatur = mean(temperatur), 
            wind = mean(wind))
#> # A tibble: 1,097 × 3
#>    date       temperatur  wind
#>    <date>          <dbl> <dbl>
#>  1 2018-01-01       9.98 1.03 
#>  2 2018-01-02       9.85 1.00 
#>  3 2018-01-03       9.88 1.02 
#>  4 2018-01-04      10.3  1.02 
#>  5 2018-01-05       9.83 0.979
#>  6 2018-01-06      10.1  1.00 
#>  7 2018-01-07       9.74 0.984
#>  8 2018-01-08       9.96 0.997
#>  9 2018-01-09      10.3  1.01 
#> 10 2018-01-10      10.1  0.987
#> # … with 1,087 more rows

,由(v2.0.1)

I'm assuming your data looks like DF2 (and you use lubridate)

library(tidyverse)
library(lubridate)
StartDateTime <- dmy_hm("-01-01-2018 01:00")
EndDateTime <- dmy_hm("01-01-2021 00:00")
date_hour_seq <- seq.POSIXt(StartDateTime, EndDateTime, by = "hour")
DF2 <- data.frame(DateTime = date_hour_seq,
                  temperatur = rnorm(length(date_hour_seq), 10),
                  wind = rnorm(length(date_hour_seq), 1, .1))

Then you can create a new date variable in group_by and
calculate the average using summarise:

DF2 %>% group_by(date = date(DateTime)) %>%
  summarise(temperatur = mean(temperatur), 
            wind = mean(wind))
#> # A tibble: 1,097 × 3
#>    date       temperatur  wind
#>    <date>          <dbl> <dbl>
#>  1 2018-01-01       9.98 1.03 
#>  2 2018-01-02       9.85 1.00 
#>  3 2018-01-03       9.88 1.02 
#>  4 2018-01-04      10.3  1.02 
#>  5 2018-01-05       9.83 0.979
#>  6 2018-01-06      10.1  1.00 
#>  7 2018-01-07       9.74 0.984
#>  8 2018-01-08       9.96 0.997
#>  9 2018-01-09      10.3  1.01 
#> 10 2018-01-10      10.1  0.987
#> # … with 1,087 more rows

Created on 2022-06-10 by the reprex package (v2.0.1)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文