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

R语言基于多列条件新增指定位置YES/NO列的问题求解

原有代码错误原因
  • 误用select()函数:select()的作用是选择数据框的列,不能在select()内部写SURREY >7、KENT ==2这类值判断逻辑,这类写法属于语法错误,无法返回正确的布尔判断结果。
  • 逻辑运算维度不匹配:直接对多个不同维度的select()返回结果用|做或运算,会出现维度不匹配的报错,即使不报错也会得到错误的布尔值。
  • 判断逻辑不严谨:rowSums()返回的是数值型结果,ifelse()的判断条件需要明确判断行和是否大于0,虽然R会自动将非0数值转为TRUE,但写法不严谨且容易因为前面的错误得到不符合预期的结果。
正确实现方案

推荐直接用dplyr的列直接判断写法,逻辑清晰易读,不容易出错:
首先确保加载dplyr包:
library(dplyr)
运行如下代码即可:

DATA2 <- DATA %>%
  mutate(
    NEW_COL = if_else(
      DERBY > 7 | NEWCASTLE > 7 | SURREY > 7 | KENT == 2 | HULL == 2,
      "YES",
      "NO"
    ),
    .before = 2
  )

如果后续判断列较多需要扩展,也可以用rowSums的规范写法:

DATA2 <- DATA %>%
  mutate(
    NEW_COL = if_else(
      rowSums(
        data.frame(DERBY >7, NEWCASTLE >7, SURREY >7, KENT ==2, HULL ==2),
        na.rm = TRUE
      ) > 0,
      "YES",
      "NO"
    ),
    .before = 2
  )

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.04 21:42:01