【发布时间】:2020-11-06 18:37:54
【问题描述】:
这里是初学者。尝试使用具有多个子字符串条件(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"),
(substr(AIRLINE_RE,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
【问题讨论】:
-
欢迎来到stackoverflow。对于每一行,
case_when将返回条件为真的第一个子句。所以问题可能是case_when的工作方式与您想要使用它的方式相匹配。但如果没有更多细节,这很难说。请您添加示例数据、预期输出和当前输出吗?看看minimal reproducible example 可能会有所帮助。 -
感谢@Simon.S.A。为您的回复和建议。我已经用一些数据、当前和预期的输出更新了我的查询。任何帮助将不胜感激。