R语言ifelse比较错误

问题描述 投票:0回答:1

我是 R 新手,试图将我有限的知识应用到现实世界的情况中,但这让我感到非常沮丧,希望得到一些帮助。

我有一个数据框,其中 Id 为双精度型,State_Name 为字符型,Income_to_Debt 为双精度型。

我想将借方收入小于零的行分类为“负”,将大于或等于零的行分类为“正”。 我的 R 命令似乎不起作用,我无法理解为什么它将所有值指定为“正”。 难道它不应该比较收入与债务并将 >= 0 的那些分配为正,否则分配为负吗?

这是我正在使用的 R 命令:

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

注意:这些示例是虚构的,这样我就可以理解我应该做什么来根据列值分配分类。 示例 source_df

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

示例 df

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

我尝试阅读 R for Data Science 书籍并观看一些 YouTube 视频,但它似乎并没有澄清可能发生的情况,因为没有错误消息;只是一个不正确或意外的结果。

r if-statement
1个回答
0
投票

正如 Dave2e 所指出的,它正在评估引用的值而不是引用的列名称。 我将其更改为以下内容并且成功了。

df <- source_df %>% mutate('Pos_Neg' = ifelse(source_df$'收入债务' >= 0, '正', '负'))

我很好奇为什么如果 mutate 函数通过 %>% 传递了 source_df,为什么它不知道引用的值是列名。 如果我没有引用列名称,即使使用 df$ 引用,它也会将列名称误解为收入 - 债务 - 在连字符之间添加空格。

最新问题
© www.soinside.com 2019 - 2025. All rights reserved.