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

能否使用CrossTable函数并对输出中的年收入设置分组范围?

解决方案:对年收入分组后生成交叉表

当然可以解决这个问题!你只需要先对annual_inc变量做分组处理,再把分组后的变量传入CrossTable函数就行。这里给你两种实用的分组方法:

1. 手动自定义分组区间

针对你数据集中年收入0-900万的范围,你可以用cut()函数手动设置合理的分组断点,比如按收入层级划分:

# 对年收入进行分组
loandata$annual_inc_grouped <- cut(
  loandata$annual_inc,
  breaks = c(0, 100000, 300000, 500000, 9000000), # 自定义分组边界
  labels = c("0-10万", "10-30万", "30-50万", "50万以上"), # 每组的显示名称
  include.lowest = TRUE # 确保最小值0被包含在第一个组内
)

# 使用分组后的变量生成交叉表
CrossTable(loandata$annual_inc_grouped, loandata$grade, 
           prop.r = TRUE, prop.c = FALSE, prop.t = FALSE, prop.chisq = FALSE)

你可以根据分析需求调整breaks和labels参数,比如如果想重点关注高收入群体,可以把50万以上的区间拆分成更细的组(比如50-100万、100万以上)。

2. 按分位数分组(保证每组样本量均匀)

如果希望每组的样本数量更均衡,可以用分位数来划分区间,比如四分位数:

# 按年收入的四分位数分组
loandata$annual_inc_quantile <- cut(
  loandata$annual_inc,
  breaks = quantile(loandata$annual_inc, na.rm = TRUE), # 自动计算四分位数断点
  labels = c("Q1(最低25%)", "Q2", "Q3", "Q4(最高25%)"),
  include.lowest = TRUE
)

# 生成交叉表
CrossTable(loandata$annual_inc_quantile, loandata$grade, 
           prop.r = TRUE, prop.c = FALSE, prop.t = FALSE, prop.chisq = FALSE)

注意:如果你的数据中有NA值,一定要加上na.rm = TRUE参数来忽略缺失值,避免分组出错。

额外小提示

分组完成后,可以用table(loandata$annual_inc_grouped)检查每组的样本数量,确认分组是否符合你的预期。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.20 12:04:30