首页 > 解决方案 > 使用 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?

非常感谢你,

标签: dplyr

解决方案


我找到了解决方案:

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) %>%


推荐阅读