首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >R:如何将30分钟增量数据点平均为日平均值,并最终在R中有一个具有平均日值的表

R:如何将30分钟增量数据点平均为日平均值,并最终在R中有一个具有平均日值的表
EN

Stack Overflow用户
提问于 2022-06-04 20:44:44
回答 1查看 51关注 0票数 0

我有地下水水位数据(WSE),在10个月的时间内以30分钟递增。我正试图将地下水的海拔平均为每日的数值。理想情况下,我的最后一张桌子应该有一个日期和一天的平均地下水水位。任何帮助都将不胜感激。我附上了我的数据集的一张照片。

EN

回答 1

Stack Overflow用户

发布于 2022-06-04 21:36:38

使用dplyrlubridate包,您可以为每天创建唯一的组,并计算当天值的平均值(即当天所有30分钟时间间隔值的平均值)。

代码语言:javascript
复制
# Simulate your dataset
date_df <- data.frame(
  datetime = seq(
    from = as.POSIXct("2020-01-01 00:00"),
    to   = as.POSIXct("2020-01-10 00:00"),
    by   = "30 min"
    )
  ) %>% 
  dplyr::mutate(val = rnorm(nrow(.)))  

# group by day, month, and year on 30 minute datetime intervals, then take mean of value within each group
date_df <- 
  date_df %>%  
  dplyr::mutate(
    day   = lubridate::day(datetime),
    month = lubridate::month(datetime),
    year  = lubridate::year(datetime)
  ) %>% 
  dplyr::group_by(day, month, year) %>% 
  dplyr::summarise(
    avg_gw_elev = mean(val, na.rm = T)
  ) %>% 
  dplyr::ungroup() %>% 
  dplyr::mutate(
    datetime = as.Date(paste0(year, "-", month, "-", day))
  ) %>% 
  dplyr::select(datetime, avg_gw_elev)

head(date_df)

  # A tibble: 6 x 2
  datetime   avg_gw_elev
  <date>           <dbl>
1 2020-01-01      0.120 
2 2020-01-02      0.0295
3 2020-01-03     -0.0850
4 2020-01-04     -0.0367
5 2020-01-05      0.201 
6 2020-01-06      0.0132
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72503032

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档