如何解决dplyr:case_when在满足第一个条件后具有多个子字符串条件
这里是初学者。尝试使用具有多个子字符串条件(15位字符串)的dplyr:case_when。我意识到,一旦满足第一行的条件,就不会检查其他条件。希望能解决这个问题吗?
initialResults <- data %>% mutate(PLANE_TYPE = case_when(
(substr(AIRLINE_RE,12,1) == "Y" ~ "HLT"),(substr(AIRLINE_RE,4,1) == "Y" ~ "ALA"),6,1) == "Y" ~ "WTC"),TRUE ~ "Unknown"))
AIRLINE_RE PLANE_TYPE
1 NNNNNNNNNNNYNNN HLT
2 NNNYNNNNNNNNNNN Unknown
3 NNNNNNNNNNNYNNN HLT
4 YNNNNNNNNNNNNNN Unknown
5 NNNNNYNNNNNNNNN Unknown
所需的输出
AIRLINE_RE PLANE_TYPE
1 NNNNNNNNNNNYNNN HLT
2 NNNYNNNNNNNNNNN ALA
3 NNNNNNNNNNNYNNN HLT
4 YNNNNNNNNNNNNNN Unknown
5 NNNNNYNNNNNNNNN WTC
解决方法
使用其他详细信息,原因似乎可能是substr
。此函数的输入是:
substr(x,start,stop)
从您的代码看来,您好像使用第三个参数作为要返回的字符数,而不是要停止的字符位置(文档here)。
以下内容为我产生了您想要的输出:
library(dplyr)
data = data.frame(AIRLINE_RE = c("NNNNNNNNNNNYNNN","NNNYNNNNNNNNNNN","NNNNNNNNNNNYNNN","YNNNNNNNNNNNNNN","NNNNNYNNNNNNNNN"))
data %>% mutate(PLANE_TYPE = case_when(
substr(AIRLINE_RE,12,12) == "Y" ~ "HLT",substr(AIRLINE_RE,4,4) == "Y" ~ "ALA",6,6) == "Y" ~ "WTC",TRUE ~ "Unknown"))
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。