R语言如何将跨多年的重复日期列转换为累计计数的周数新列
解决方案
核心逻辑是先计算单年度的周数,再对2020年的周数叠加2019年的总周数偏移量即可,我们用lubridate包处理日期和周数计算,适配性更强。
步骤1:加载依赖包
install.packages("tidyverse") # 没安装过先跑这行,已安装可以跳过 library(dplyr) library(lubridate)
步骤2:计算累计周数
假设你的数据集名为df,运行以下代码即可生成你需要的累计周数列:
df_result <- df %>% # 转换date列为标准日期格式,若原列已经是日期格式可删除此行 mutate(date = ymd(date)) %>% # 计算单年度周数,默认周一是每周第一天,要周日开头换epiweek() mutate(single_year_week = isoweek(date), # 叠加年度偏移量生成累计周数 cum_week = case_when( year(date) == 2019 ~ single_year_week, year(date) == 2020 ~ single_year_week + 52 ))
验证说明
你可以先抽取边界日期测试是否符合要求:
# 测试2019年末日期周数 isoweek(ymd("2019-12-31")) # 测试2020年初日期周数 isoweek(ymd("2020-01-01"))
如果测试出来的周数划分和你的预期不符,可替换isoweek为epiweek,或者自定义周数划分规则调整偏移量即可。
内容的提问来源于stack exchange,提问作者Anja.L
相关产品推荐
相关产品推荐

