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

如何在R语言中将范围值列转换为中位数或均值

在R中将范围字符串转换为中位数列

这里提供两种常用实现方式,适配不同代码风格:

基础R方法

无需额外安装包,直接用内置函数处理:

a <- c("10-15","20-25","30-35","35-40")
df <- data.frame(a)

# 生成中位数新列
df$median_a <- sapply(strsplit(df$a, "-"), function(x) {
  median(as.numeric(x))
})
  • strsplit(df$a, "-") 将每个范围字符串按-分割成包含两个数值的向量
  • sapply 遍历所有分割结果,转成数值型后计算中位数,最终赋值给新列median_a

tidyverse方法

如果习惯使用tidyverse生态(dplyr+tidyr),可以用更直观的分步操作:

library(tidyverse)

a <- c("10-15","20-25","30-35","35-40")
df <- data.frame(a)

df <- df |>
  # 将范围拆分为上下限两列,并自动转为数值型
  separate(a, into = c("low", "high"), sep = "-", convert = TRUE) |>
  # 按行计算中位数
  rowwise() |>
  mutate(median_a = median(c(low, high))) |>
  ungroup() |>
  # 可选:恢复原范围列(如果需要保留)
  mutate(a = paste(low, high, sep = "-")) |>
  select(a, median_a)
  • 若你的范围都是对称整数区间(如示例),也可以简化为mutate(median_a = (low + high)/2),结果完全一致

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.17 13:25:16