我是 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 视频,但它似乎并没有澄清可能发生的情况,因为没有错误消息;只是一个不正确或意外的结果。
正如 Dave2e 所指出的,它正在评估引用的值而不是引用的列名称。 我将其更改为以下内容并且成功了。
df <- source_df %>% mutate('Pos_Neg' = ifelse(source_df$'收入债务' >= 0, '正', '负'))
我很好奇为什么如果 mutate 函数通过 %>% 传递了 source_df,为什么它不知道引用的值是列名。 如果我没有引用列名称,即使使用 df$ 引用,它也会将列名称误解为收入 - 债务 - 在连字符之间添加空格。