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

在R中使用IF ELSE从数值列创建分类列时遇错误求助

问题解决:根据月份生成季节分类列

错误原因

你的代码存在两个核心问题:

  1. 语法错误:每个ifelse的条件后多写了一个闭合括号,破坏了ifelse(条件, 真结果, 假结果)的标准结构,导致as.factor被传入多余参数,触发"unused arguments"报错。
  2. 逻辑错误:季节划分规则混乱,比如把3-5月同时归为Winter和Spring,不符合常规季节定义。

修正后的base R代码(ifelse版本)

同时修正语法与逻辑,确保每个月份对应正确季节:

bostoncrimes_zips$Season <- as.factor(
  ifelse(bostoncrimes_zips$MONTH %in% c(12, 1, 2), "Winter",
         ifelse(bostoncrimes_zips$MONTH %in% 3:5, "Spring",
                ifelse(bostoncrimes_zips$MONTH %in% 6:8, "Summer", "Fall")))
)

更简洁的替代写法

方法1:使用dplyr的case_when(可读性更强)

library(dplyr)
bostoncrimes_zips <- bostoncrimes_zips %>%
  mutate(Season = factor(case_when(
    MONTH %in% c(12, 1, 2) ~ "Winter",
    MONTH %in% 3:5 ~ "Spring",
    MONTH %in% 6:8 ~ "Summer",
    MONTH %in% 9:11 ~ "Fall"
  )))

方法2:使用base R的cut函数(高效简洁)

bostoncrimes_zips$Season <- cut(
  bostoncrimes_zips$MONTH,
  breaks = c(0, 2, 5, 8, 11, 12),
  labels = c("Winter", "Spring", "Summer", "Fall", "Winter"),
  include.lowest = TRUE
)

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.27 21:37:30