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

如何在R中按区域分组数据框并找出预期寿命变化均值最高的区域

嘿,别担心,你的思路其实已经找对方向了,只是在细节上稍微调整下就能完美解决!咱们一步步来理顺整个流程:

第一步:修正均值计算的代码

你用split()把数据按区域分组的逻辑完全没问题,但要注意:split()返回的是列表类型的数据,而apply()函数是专门用来处理数组或矩阵的,所以这里应该用lapply()或者sapply()来遍历列表元素:

# 按区域分组(这部分你写的完全正确)
life_expectancy_split_in_regions <- split(life_expectancy, life_expectancy$region)

# 计算每个区域change列的均值,用sapply直接得到带区域名称的向量
mean_of_regions <- sapply(life_expectancy_split_in_regions, function(x) {
  mean(x$change, na.rm = TRUE)  # 强烈建议加上na.rm=TRUE,避免缺失值导致结果为NA
})

小提示:加上na.rm=TRUE是处理真实数据的好习惯,毕竟现实中很少有完全无缺失的数据集。

第二步:找出均值最高的区域

现在mean_of_regions是一个带有区域名称的数值向量,要找到预期寿命变化均值最高的区域非常简单:

# 用which.max定位最大值的位置,再提取对应的区域名称
top_region <- names(which.max(mean_of_regions))
# 提取对应的均值
top_mean_value <- mean_of_regions[top_region]

# 直观打印结果
cat("预期寿命变化均值最高的区域是", top_region, ",均值为", round(top_mean_value, 2), "\n")
更简洁的替代方案(可选)

如果你习惯用tidyverse风格的代码,用dplyr包的分组计算会更直观,代码可读性也更强:

library(dplyr)

# 分组计算均值并按均值降序排列
region_mean_summary <- life_expectancy %>%
  group_by(region) %>%
  summarise(mean_change = mean(change, na.rm = TRUE)) %>%
  arrange(desc(mean_change))

# 第一行就是均值最高的区域
top_region_result <- region_mean_summary[1, ]
print(top_region_result)

内容的提问来源于stack exchange,提问作者R.Kim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.15 04:53:06