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

如何使用dplyr将数据框中的数值列映射为分类组

使用dplyr实现数值列到分组的映射

嘿,这事儿用dplyr完全可以轻松搞定!我给你分享两种实用的方案,你可以根据自己的映射复杂程度来选:

方案一:直接用case_when写映射规则

如果你的映射规则比较简单、固定,直接用case_when配合mutate就能快速生成分组列。

举个例子,假设你的原始数据框(图1)是这样的:

library(dplyr)

# 模拟图1的数值列数据
df1 <- tibble(
  样本ID = 1:6,
  数值列 = c(3, 12, 25, 8, 18, 22)
)

假设你的映射规则(对应图2)是:

  • 数值 ≤10 → 分组"低"
  • 10 < 数值 ≤20 → 分组"中"
  • 数值 >20 → 分组"高"

那执行下面的代码就能生成分组列:

df_result <- df1 %>%
  mutate(
    分组列 = case_when(
      数值列 <= 10 ~ "低",
      数值列 <= 20 ~ "中",
      TRUE ~ "高"  # 兜底匹配剩下的所有情况
    )
  )

# 查看结果
df_result

方案二:用映射表+left_join实现(更灵活)

如果你的映射规则后续可能调整,或者规则比较多,先单独建一个映射表再关联会更方便,不用修改主逻辑代码。

第一步,先创建你的映射规则表(对应图2的分组逻辑):

# 模拟图2的映射规则表
map_table <- tibble(
  数值下限 = c(0, 11, 21),
  数值上限 = c(10, 20, Inf),
  分组 = c("低", "中", "高")
)

然后用left_join结合between函数来匹配分组:

df_result <- df1 %>%
  left_join(map_table, by = character()) %>%  # 笛卡尔积关联
  filter(between(数值列, 数值下限, 数值上限)) %>%
  select(样本ID, 数值列, 分组)

# 查看结果
df_result

这个方法的好处是,后续要修改分组规则,只要调整map_table就行,主流程代码不用动~

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:45:04