R语言如何从Income_Democracy.dta筛选平均dem_ind>0.95的国家名称
首先确认你已经将Income_Democracy.dta导入为incdem数据框,如果还未导入,可以使用haven包读取Stata格式的dta文件:
# 未安装haven包先执行下行注释代码 # install.packages("haven") library(haven) incdem <- read_dta("Income_Democracy.dta")
以下提供两种常用实现方案:
方案1:基础R实现(适配你已掌握的subset、mean函数逻辑)
用基础R自带的aggregate()函数完成分组聚合,无需安装额外依赖包:
# 按国家分组,计算每个国家dem_ind的平均值,na.rm=TRUE可自动忽略缺失值 country_dem_mean <- aggregate(dem_ind ~ country, data = incdem, FUN = function(x) mean(x, na.rm = TRUE)) # 筛选平均dem_ind大于0.95的国家,生成结果数据集 result <- subset(country_dem_mean, dem_ind > 0.95)
执行后result就是符合要求的新数据集,第一列为国家名称,第二列为对应平均dem_ind值。如果只需提取符合条件的国家名向量,追加一行代码即可:
qualified_countries <- result$country
方案2:tidyverse实现(语法更直观,适合后续复杂分析扩展)
如果你使用tidyverse生态的工具,用dplyr的分组汇总逻辑可读性更强:
# 未安装tidyverse包先执行下行注释代码 # install.packages("tidyverse") library(dplyr) result <- incdem %>% group_by(country) %>% # 按国家维度分组 summarise(mean_dem_ind = mean(dem_ind, na.rm = TRUE)) %>% # 计算每组的平均dem_ind filter(mean_dem_ind > 0.95) # 筛选符合阈值的国家
内容的提问来源于stack exchange,提问作者user17237061
相关产品推荐
相关产品推荐

