You need to enable JavaScript to run this app. R语言如何基于温度与降水的分箱组合计算人口密度中位数
优惠活动
大模型
产品
解决方案
定价
更多

R语言如何基于温度与降水的分箱组合计算人口密度中位数

实现方案

步骤1:关联分箱结果到原数据集

你已经完成了降水和温度的分箱计算,先将两个分箱结果作为新列存入原数据集:

# 加入降水、温度分箱列
test$precip_bin <- group_tags
test$temp_bin <- group_tags1

方案1:使用tidyverse生态实现(代码更简洁)

无需编写for循环,直接用分组聚合逻辑即可完成所有分箱组合的中位数计算:

# 加载所需包,没安装的话先运行 install.packages("dplyr")
library(dplyr)

# 计算每个分箱组合的人口密度中位数,默认仅返回有样本的组合
bin_median <- test %>%
  group_by(temp_bin, precip_bin) %>%
  summarise(
    median_population_density = median(Pp, na.rm = TRUE),
    sample_count = n(), # 可选:统计每个分箱的样本量,方便校验
    .groups = "drop"
  )

# 如果需要保留所有温度+降水的分箱组合(无样本的组合中位数显示为NA),加上complete逻辑即可
library(tidyr)
bin_median_full <- bin_median %>%
  complete(temp_bin, precip_bin)

方案2:使用R内置函数实现(无需额外安装包)

如果你不想安装第三方包,可以用base R的aggregate函数实现:

bin_median <- aggregate(
  Pp ~ temp_bin + precip_bin,
  data = test,
  FUN = function(x) median(x, na.rm = TRUE)
)
# 修改列名
colnames(bin_median)[3] <- "median_population_density"

补充说明

  • 两种方案返回的结果中,每一行对应唯一的温度分箱+降水分箱组合,第三列就是你需要的对应区域人口密度中位数
  • 如果某个分箱组合没有符合条件的样本,方案1不加complete的情况下会自动省略该组合,加complete后会保留且中位数显示为NA;方案2默认自动省略无样本的组合

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.20 23:45:02