我有两个数据集。第一个是显示一周内登革热病例的数量。这是数据集的第一行:
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
我想将此数据集从每日视图转换为每周视图,并平均所有行,并与登革热案例数据集合并。但我找不到将每日数据转换为每周数据的方法。怎么解决这个?
答案 0 :(得分: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"))
希望这有帮助!