如何按组从首次出现年份开始逐年重复R语言数据框数据?
R语言数据扩展解决方案
问题出在分组维度不对——你之前只按org分组,导致生成了全量年份序列;正确的做法是按**org-country组合**分组,这样才能基于每个组合的首次出现年份,生成到2021年的连续年份。
修正后的代码
library(dplyr) library(tidyr) # 假设你的原始数据框名为df df_expanded <- df %>% # 按org+country组合分组,标记每个组合的首次出现年份 group_by(org, country) %>% mutate(first_year = min(year)) %>% ungroup() %>% # 针对每个组合,生成从首次年份到2021的连续年份 group_by(org, country, first_year) %>% expand(year = first_year:2021) %>% ungroup() %>% # 清理辅助列,整理成目标格式 select(org, year, country)
关键修正点
- 分组逻辑调整:从仅按
org分组,改为org+country联合分组,确保每个组合的起始年份独立计算 - 精准生成年份序列:用
first_year:2021直接生成该组合专属的年份区间,避免full_seq拉取全量年份的问题 - 辅助列清理:最后移除临时的
first_year列,还原你需要的三列结构
用你提供的测试数据运行这段代码,就能得到每个org-country从首次出现年份开始,逐年填充至2021年的结果。
内容的提问来源于stack exchange,提问作者user12157566
相关产品推荐
相关产品推荐

