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

R语言ifelse比较逻辑错误求助:所有分类结果均为Positive

问题原因与解决方法

问题根源

你在ifelse判断中用单引号'Income-to-Debt'指代列名,这会被R识别为字符串字面量,而非数据框中的目标列。当执行'Income-to-Debt' >= 0时,R会尝试将字符串转换为数值,结果返回NA;而ifelse遇到NA条件时,会默认返回第一个分支的结果(即'Positive'),导致所有行都被错误标记。

修正方案

对于包含连字符这类特殊字符的列名,需用反引号(`)包裹来正确引用,或使用dplyr的.data代词明确指定列:

方案1:反引号包裹列名

df <- source_df %>% mutate(Pos_Neg = ifelse(`Income-to-Debt` >= 0, 'Positive', 'Negative'))

方案2:使用.data代词

df <- source_df %>% mutate(Pos_Neg = ifelse(.data[['Income-to-Debt']] >= 0, 'Positive', 'Negative'))

正确结果示例

执行修正后的代码后,数据框将得到符合预期的分类:

Id     State_Name     Income-to-Debt      Pos_Neg
1      Alaska         1.24560987622       Positive
2      Alaska         -2.52225746912      Negative
3      Alabama        1.35606080600       Positive
4      Michigan       -1.89243582052      Negative
5      Ohio           2.56434636363       Positive
6      Idaho          0.00000000000       Positive

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.15 00:12:39