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

如何在R语言中对数据框的两列同时分箱生成统一分箱列?

同时对数据框两列分箱并生成统一分箱列的解决方案

基础R实现方式

先通过cut()函数分别给x、y列按你定义的分箱区间做分箱,再用interaction()把两个分箱结果合并成一个统一的分箱列,代码如下:

x <- sample(100)
y <- sample(100)

data <- data.frame(x, y)

xbin <- seq(from = 0, to = 100, by = 10)
ybin <- seq(from = 0, to = 100, by = 10)

# 给x、y各自分箱,include.lowest确保最小值被包含进第一个分箱
data$x_bin <- cut(data$x, breaks = xbin, include.lowest = TRUE)
data$y_bin <- cut(data$y, breaks = ybin, include.lowest = TRUE)

# 合并两个分箱列,生成唯一的组合分箱标识
data$combined_bin <- interaction(data$x_bin, data$y_bin, sep = "-")

tidyverse(dplyr)实现方式

如果平时用tidyverse这套工具链,用mutate()可以更简洁地完成操作:

library(dplyr)

x <- sample(100)
y <- sample(100)

data <- data.frame(x, y)

xbin <- seq(from = 0, to = 100, by = 10)
ybin <- seq(from = 0, to = 100, by = 10)

data <- data %>%
  mutate(
    x_bin = cut(x, breaks = xbin, include.lowest = TRUE),
    y_bin = cut(y, breaks = ybin, include.lowest = TRUE),
    # 用paste把两个分箱标签连起来,生成统一分箱列
    combined_bin = paste(x_bin, y_bin, sep = "-")
  )

要是不需要保留单独的x_bin和y_bin列,还能一步到位:

data <- data %>%
  mutate(combined_bin = paste(
    cut(x, breaks = xbin, include.lowest = TRUE),
    cut(y, breaks = ybin, include.lowest = TRUE),
    sep = "-"
  ))

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 01:40:31