You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何按各国不同民主转型年份批量子集化国家-年份panel数据集

R面板数据按各国自定义时间阈值批量筛选方法

核心思路

将各国的民主转型年份整理为独立的对照映射表,通过匹配合并的方式自动完成全量筛选,不需要手动拼接大量逻辑判断条件。


操作步骤

步骤1:构建国家转型年份对照数据表

只需要整理一次即可长期复用,120个国家也只需要填一次对应关系:

transition_year <- data.frame(
  Country = c("A", "B", "C", "D", "E"),
  min_year = c(1965, 1988, 1997, 1994, 1997)
)

注意:列名需要和你的原始数据集列名匹配,min_year为对应国家需要保留的起始年份,使用数值格式不要加引号。

步骤2:批量筛选数据

提供两种常用实现方案:

方案1:base R 实现,不需要加载第三方包

# 把转型年份匹配到原始数据集
Data_with_min <- merge(Data, transition_year, by = "Country", all.x = TRUE)
# 仅保留年份大于等于转型年份的观测
Data2 <- Data_with_min[Data_with_min$date >= Data_with_min$min_year, ]
# 可选:删除不需要的min_year辅助列
Data2$min_year <- NULL

方案2:dplyr 实现,代码更简洁易读

library(dplyr)

Data2 <- Data %>%
  # 匹配各国转型年份
  left_join(transition_year, by = "Country") %>%
  # 批量筛选符合条件的观测
  filter(date >= min_year) %>%
  # 移除辅助列
  select(-min_year)

注意事项

如果你的原始数据集的国家列名为country_name、年份列名为year,请把上述代码中的列名替换为你实际使用的列名,同时保证年份类为数值型,避免字符型比较出错。

内容的提问来源于stack exchange,提问作者LL J

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.10.05 10:21:02