首页 文章

从每日数据中获取每周平均值并合并它们

提问于
浏览
1

我有两个数据集 . 第一个是显示一周内登革热病例的数量 . 这是数据集的第一行:

season season_week week_start_date denv1_cases denv2_cases denv3_cases denv4_cases
1 1990/1991           1      1990-04-30           0           0           0           0
2 1990/1991           2      1990-05-07           0           0           0           0
3 1990/1991           3      1990-05-14           0           0           0           0
4 1990/1991           4      1990-05-21           0           0           0           0
5 1990/1991           5      1990-05-28           0           0           0           0
6 1990/1991           6      1990-06-04           1           0           0           0
  other_positive_cases additional_cases total_cases
1                    4                0           4
2                    5                0           5
3                    4                0           4
4                    3                0           3
5                    6                0           6
6                    1                0           2

第二列显示登革热季节的周数,第三列显示该周的开始日期 . 我有另一个包含天气数据的数据集 . 这是数据集的第一行:

TMAX TMIN TAVG TDTR PRCP       date
1 26.7 20.6 23.7  6.1  1.3 1956-01-01
2 25.6 21.1 23.4  4.5 20.8 1956-01-02
3 26.7 21.7 24.2  5.0  1.8 1956-01-03
4 26.7 19.4 23.0  7.3  0.0 1956-01-04
5 27.8 17.2 22.5 10.6  0.0 1956-01-05
6 26.1 21.1 23.6  5.0  0.3 1956-01-06

我想将此数据集从每日视图转换为每周视图,并平均所有行,并与登革热案例数据集合并 . 但我找不到将每日数据转换为每周数据的方法 . 怎么解决这个?

1 回答

  • 1

    我假设你的第一个数据集中的每周开始日期是星期日 . 鉴于这个假设,我们可以使用包中的 floor_date lubridate

    require(lubridate)
    require(dplyr)
    
    df2 <- df2 %>%
        mutate(date = floor_date(ymd(date), unit = "weeks")) %>%
        group_by(date) %>%
        summarise_all(.funs = mean)
    

    确保所有列(除日期外)都是数字 .

    然后你可以自由地加入到df1:

    df3 <- d1 %>%
        left_join(df2, by = c("week_start_date" = "date"))
    

    希望这可以帮助!

相关问题