如何从数据集中获取特定区域GDP的中位数、均值等汇总统计量?
获取单个区域GDP的汇总统计量
Got it!你已经知道用summary(data$GDP, na.rm=TRUE)查看所有区域的GDP全局汇总,要单独提取某一区域(比如非洲、欧洲)的均值、中位数、四分位数、极差这些统计量,核心思路就是先筛选出对应区域的数据,再执行统计操作。这里给你几种实用的实现方法:
方法1:Base R原生实现
如果不想额外加载包,用Base R的筛选功能就能搞定:
- 用
subset()函数精准筛选区域:
这个方法会先从# 提取非洲区域的GDP汇总统计 summary(subset(data, Region == "Africa")$GDP, na.rm = TRUE)data中挑出Region等于"Africa"的所有行,再提取其中的GDP列,最后生成包含均值、中位数、四分位数等的汇总结果。 - 用逻辑索引筛选(和上面效果一致):
# 提取欧洲区域的GDP汇总统计 summary(data[data$Region == "Europe", "GDP"], na.rm = TRUE)
方法2:用dplyr(tidyverse)灵活自定义统计量
如果你需要更灵活地指定要输出的统计指标(比如单独提取极差),推荐用dplyr包,代码可读性更高,还能批量处理多个区域:
- 先加载dplyr包:
library(dplyr) - 单个区域的自定义统计:
# 提取亚洲区域的指定统计量 data %>% filter(Region == "Asia") %>% summarise( 均值 = mean(GDP, na.rm = TRUE), 中位数 = median(GDP, na.rm = TRUE), 第一四分位数 = quantile(GDP, 0.25, na.rm = TRUE), 第三四分位数 = quantile(GDP, 0.75, na.rm = TRUE), 极差 = max(GDP, na.rm = TRUE) - min(GDP, na.rm = TRUE) ) - 一次性获取所有区域的汇总统计(更高效):
如果想同时得到非洲、亚洲、欧洲等所有区域的统计结果,直接用group_by()分组即可:data %>% group_by(Region) %>% summarise( 均值 = mean(GDP, na.rm = TRUE), 中位数 = median(GDP, na.rm = TRUE), 第一四分位数 = quantile(GDP, 0.25, na.rm = TRUE), 第三四分位数 = quantile(GDP, 0.75, na.rm = TRUE), 极差 = max(GDP, na.rm = TRUE) - min(GDP, na.rm = TRUE) )
注意事项
- 确保你输入的区域名称(比如"Africa")和
data中Region列的取值完全一致(包括大小写、空格),否则会筛选不到数据; - 始终加上
na.rm = TRUE参数,避免因GDP列存在缺失值导致统计结果出错。
内容的提问来源于stack exchange,提问作者user7942424
相关产品推荐
相关产品推荐

