R语言按国家和最近更小年份拆分筛选汇总政党表现数据集方法
实现方案
使用R的tidyverse套件即可快速完成需求,具体操作如下:
1. 依赖加载
先安装并加载所需工具包:
install.packages("tidyverse") # 未安装时执行此行 library(tidyverse)
2. 核心处理代码
修改target_year参数为你需要的目标年份,运行以下代码即可得到结果:
# 自定义目标年份,可按需替换数值 target_year <- 2010 result <- party.osp5 %>% # 第一步:筛选所有年份小于目标年份的观测 filter(year < target_year) %>% # 第二步:按国家分组,筛选每个国家距离目标年份最近的观测(即剩余观测里年份最大的条目) group_by(country_name) %>% filter(year == max(year)) %>% # 重命名匹配到的年份字段,方便识别 rename(最近匹配年份 = year) %>% # 第三步:按国家+匹配年份分组,对17个表现类指标求和 group_by(country_name, 最近匹配年份) %>% summarise( across(all_of(colnames(party.osp5)[15:33]), sum, na.rm = TRUE), .groups = "drop" )
结果说明
输出的result tibble完全符合需求结构:
- 第一列为
country_name(国家名称) - 第二列为
最近匹配年份(对应国家筛选到的小于目标年的最近观测年份) - 第3至19列为17个表现类指标的国家维度汇总值
可选调整项
- 如果需要保留无符合条件观测的国家(对应字段赋值为NA),可以在代码末尾增加
right_join(distinct(party.osp5, country_name), by = "country_name") - 如果不需要自动忽略缺失值求和,删掉
sum函数里的na.rm = TRUE参数即可
内容的提问来源于stack exchange,提问作者TheGrown
相关产品推荐
相关产品推荐

