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

如何依据crim变量中位数为boston数据集新增高低判定列?

boston数据集新增犯罪率相对中位数标注列的实现方法

首先将已计算得到的犯罪率中位数存储为独立对象,避免重复计算:

median_crim <- median(boston$crim)

基础R原生实现(无需加载第三方包)

通过ifelse完成条件判断,新增对应标注列:

boston$crim_level <- ifelse(
  boston$crim > median_crim,
  "高于中位数",
  ifelse(
    boston$crim == median_crim,
    "等于中位数",
    "低于中位数"
  )
)

tidyverse 工作流实现

搭配dplyr的mutate和case_when函数实现多条件判断,可读性优于嵌套ifelse:

library(dplyr)
boston <- boston %>%
  mutate(
    crim_level = case_when(
      crim > median_crim ~ "高于中位数",
      near(crim, median_crim) ~ "等于中位数",
      .default = "低于中位数"
    )
  )

快速分箱实现

如果无需单独标记等于中位数的观测,可直接通过cut函数按断点切分连续值生成标注:

boston$crim_level <- cut(
  boston$crim,
  breaks = c(-Inf, median_crim, Inf),
  labels = c("低于等于中位数", "高于中位数"),
  include.lowest = TRUE
)

实操注意事项

  • 新增列的名称可根据分析需求自定义,只要与数据集现有列名无重复即可
  • 连续数值的等值判断容易受浮点精度影响,推荐用dplyr::near()替代==做等值校验,避免判断失准
  • 若数据集为data.table格式,判断逻辑完全通用,仅需替换为对应的列赋值语法即可,参考实现:
    library(data.table)
    boston[, crim_level := ifelse(crim > median_crim, "高于中位数", "低于中位数")]
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.25 20:24:05