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

R语言使用dplyr基于5个0/1列生成model列及case_when报错解决

R代码修正方案

原代码核心错误点

  • 管道运算符拼写错误:仅写了%>,正确的dplyr管道运算符为%>%
  • 新建列赋值符号错误:mutate内给新列赋值需用=,你误用了用于相等判断的==
  • case_when语法错误:无需嵌套多层case_when,所有判断规则直接作为同一case_when的参数即可,每个规则统一为「逻辑条件 ~ 返回值」的二项式结构
  • 返回值类型不统一:1-5加了单引号为字符类型,默认返回的0为数值类型,类型冲突会引发报错

完整实现代码

首先读入数据源:

# 读入04cars.csv数据
cars <- read.csv("04cars.csv")
# 加载dplyr包
library(dplyr)

生成model列的处理代码:

cars <- cars %>%
  mutate(model = case_when(
    Sport == 1 ~ 1,
    SUV == 1 ~ 2,
    Wagon == 1 ~ 3,
    Minivan == 1 ~ 4,
    Pickup == 1 ~ 5,
    TRUE ~ 0
  ))

补充说明

  • case_when会按编写顺序依次匹配条件,匹配到第一个符合的条件后就会返回对应值,不会再判断后续条件,完全符合你设定的优先级规则
  • 如果需要model列为字符类型,只需要把所有返回值统一加单引号即可:~ '1'、~ '2'……~ '0',保证所有返回值类型统一即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 04:24:03