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

使用ifelse()函数重编码数据集age列为young、middle、old三类的问题

问题原因

  • 第一行代码执行后,原本为数值类型的age列被修改为字符串类型,仅保留"young"和"middle"两个取值,无法和数值53进行大小比较。R语言中字符串与数值比较默认返回FALSE,因此第二行ifelse会将所有值统一赋值为"middle"。
  • 即使没有修改列类型,分步赋值的逻辑也存在设计缺陷:大于53岁的群体在第一行执行时就会被错误标记为"middle",后续调整逻辑冗余且容易出错。

正确实现方案

方案1:嵌套ifelse

从最严格的阈值开始判断,避免逻辑覆盖:

PU6_exercise_data$age <- ifelse(PU6_exercise_data$age < 28, "young",
                         ifelse(PU6_exercise_data$age <= 53, "middle", "old"))

方案2:使用cut函数(更推荐分箱场景)

专门的分箱函数,代码可读性更高:

PU6_exercise_data$age <- cut(PU6_exercise_data$age,
                       breaks = c(-Inf, 27, 53, Inf),
                       labels = c("young", "middle", "old"))

如果需要调整区间开闭规则,可以修改right参数,例如设置right = FALSE可将区间改为左闭右开

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.26 07:27:01