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

R语言中用dplyr的case_when生成新列报错,寻求技术帮助

问题解决:R语言case_when新增列报错修复

你的代码存在语法和逻辑错误,导致运行报错,以下是修正方案及错误说明:

错误点梳理

  • 语法错误:第一个条件ColumnY == <= 30是无效写法,==与<=不能组合使用,且你漏了规则中的下限-30,正确范围应为-30到30。
  • between函数误用:between()的正确语法是between(待判断变量, 下限, 上限),你颠倒了变量与上下限的位置,且无需额外加==(between本身返回逻辑值)。
  • 缺失值处理错误:TRUE ~ "NA"会生成字符串"NA",而非R中标准的缺失值NA,需改用NA或NA_character_。
  • 范围不符需求:规则中Late的上限是300,你写的305不符合要求。

修正后的代码

DataSetNew <- DataSet %>%
  dplyr::mutate(ColumnZ = case_when(
    ColumnY >= -30 & ColumnY <= 30 ~ "Transition",
    between(ColumnY, 31, 100) ~ "Early",
    between(ColumnY, 101, 200) ~ "Mid",
    between(ColumnY, 201, 300) ~ "Late",
    TRUE ~ NA_character_  # 返回标准缺失值,而非字符串"NA"
  ))

补充说明

  • NA_character_确保ColumnZ为字符型列,若需因子型可后续用as.factor(ColumnZ)转换。
  • case_when按顺序匹配条件,前面的范围匹配后不会进入后续判断,无需担心范围重叠问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.22 03:35:57