如何解决grepl ifelse 没有显示正确的值 (R)
我尝试根据人名创建一个“性别”列。我有多个名字,有时由两个名字组成(例如威廉亚历山大)。这是我的代码(摘录,我的名字远不止这些)
df$gender <- ifelse(grepl("LUIS|OSCAR|HELMUT|PABLO",df$names,ignore.case = T),"Man",ifelse(grepl("VIVIANA|DIANA|ADRIANA|ALBA","Woman","NA"))
我认为代码运行良好,但感谢 group_by 表示以下内容:
名字 | 性别 |
---|---|
路易斯 | 男人 |
阿尔巴·塔蒂亚娜 | 男人 |
我不明白为什么一个女人的名字显示为一个男人的名字,即使我指定它应该取值“女人”
解决方法
因为 akrun 已经指出代码中的 names
与 df 中的 Names
是问题所在:
df$gender <- ifelse(grepl("LUIS|OSCAR|HELMUT|PABLO",df$Names,ignore.case = T),"Man",ifelse(grepl("VIVIANA|DIANA|ADRIANA|ALBA","Woman","NA"))
df
输出:
Names Gender gender
<chr> <chr> <chr>
1 Luis Man Man
2 Alba Tatiana Man Woman
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。