dplyr - 使用 dplyr 根据 R 中的连续条件创建列
问题描述
我想通过连续应用不同的标准来创建一个变量。标准如下:
ungho <- unghoraw %>%
# Criteria 1:
mutate(choice1 = ifelse(UN_miss=="No data","GHO",ifelse(GHO_miss=="No data","UN",NA)))%>%
# Criteria 2:
mutate(choice2 = ifelse(diff_qual=="no diff","GHO",NA))%>%
# Criteria 3:
mutate(choice3 = ifelse(nb_years_gho>=nb_years_un,"GHO",ifelse(nb_years_un>nb_years_gho,"UN",NA)))%>%
# Criteria 4:
mutate(choice4 = ifelse(dec_gho>=dec_un,"GHO",ifelse(dec_un>dec_gho,"UN",NA)))%>%
# Criteria 5:
mutate(choice5 = ifelse(last_year_gho>=last_year_un,"GHO",ifelse(last_year_un>last_year_gho,"UN",NA)))%>%
我想应用标准 1,然后如果缺少标准 1 - 标准 2,那么如果缺少标准 1 和 2 - 标准 3,等等。我已经尝试过了,但它不起作用:
# FINAL CHOICE BASED ON CRITERIA
mutate(final_choice=ifelse(!is.na(choice1),choice1,ifelse(!is.na(choice2),choice2,ifelse(!is.na(choice3,choice4,ifelse(!is.na(choice4),choice5,NA))))) %>%
我也尝试过 mutate_cond ,但根本没有成功使它工作..
有没有办法以简单的方式创建这样的变量,而不是尝试嵌套多个 ifelse?
非常感谢你,
解决方案
我找到了解决方案:
mutate(final_choice=choice1) %>%
mutate_cond(is.na(final_choice),final_choice=choice2) %>%
mutate_cond(is.na(final_choice),final_choice=choice3) %>%
mutate_cond(is.na(final_choice),final_choice=choice4) %>%
mutate_cond(is.na(final_choice),final_choice=choice5) %>%
推荐阅读
- cfml - 我正在检查 Session.cart 是否已定义,如果未定义则定义它
- firebase - MissingPluginException(No implementation found for method DocumentReference) on Send data to firestore from flutter isolate
- stackexchange-api - 如何获得多个帖子的接受答案数量?
- python - con.commit 上的 Python 无效语法错误
- python - 如何使用 apply() 从另一列填充一列
- linux - 使用 grep 或 awk 计算准确的单词
- javascript - 使用 gsheet api 和 javascript 更新范围内的特定单元格
- python - Python Pip 本地下载
- java - ORA-00904: oracle 中的标识符无效错误
- sql - 如何在 sql server 查询中同时实现 IsNull 和 Isempty