Разные результаты с одним и тем же кодом с использованием ifelse в r

#r #dplyr

Вопрос:

У меня большой набор данных , и я пытаюсь создавать переменные с dplyr помощью, а примеры данных приведены ниже

 sample2 = data.frame(fips = c(1001,1009),  week_state_rest_close_begin = c(12, 12),  week_state_rest_close_end = c(20, 20),  week_local_rest_close_begin = c(NA, 12),  week_local_rest_close_end = c(NA, NA)) %gt;% as_tibble()  

с помощью данных я пытаюсь создать week_rest_cl_begin и week_rest_cl_end , как показано ниже

 sample2 %gt;%   mutate(week_rest_cl_begin = ifelse(!is.na(week_state_rest_close_begin) amp; !is.na(week_local_rest_close_begin),  min(week_state_rest_close_begin,week_local_rest_close_begin),  na.omit(c(week_state_rest_close_begin,week_local_rest_close_begin)))) %gt;%    mutate(week_rest_cl_end = ifelse(!is.na(week_state_rest_close_end) amp; !is.na(week_local_rest_close_end),  min(week_state_rest_close_end,week_local_rest_close_end),  na.omit(c(week_state_rest_close_end,week_local_rest_close_end)))) %gt;%   glimpse()  

В результате получается вот что. почему week_rest_cl_begin имеет значение NA?

 Columns: 7 $ fips lt;dblgt; 1001, 1009 $ week_state_rest_close_begin lt;dblgt; 12, 12 $ week_state_rest_close_end lt;dblgt; 20, 20 $ week_local_rest_close_begin lt;dblgt; NA, 12 $ week_local_rest_close_end lt;lglgt; NA, NA $ week_rest_cl_begin lt;dblgt; 12, NA $ week_rest_cl_end lt;dblgt; 20, 20  

почему у меня нет NA для fips == 1009, когда я использую фильтр?

 sample2 %gt;%   filter(fips == 1009) %gt;%   mutate(week_rest_cl_begin = ifelse(!is.na(week_state_rest_close_begin) amp; !is.na(week_local_rest_close_begin),  min(week_state_rest_close_begin,week_local_rest_close_begin),  na.omit(c(week_state_rest_close_begin,week_local_rest_close_begin)))) %gt;%    mutate(week_rest_cl_end = ifelse(!is.na(week_state_rest_close_end) amp; !is.na(week_local_rest_close_end),  min(week_state_rest_close_end,week_local_rest_close_end),  na.omit(c(week_state_rest_close_end,week_local_rest_close_end)))) %gt;%   glimpse()   Columns: 7 $ fips lt;dblgt; 1009 $ week_state_rest_close_begin lt;dblgt; 12 $ week_state_rest_close_end lt;dblgt; 20 $ week_local_rest_close_begin lt;dblgt; 12 $ week_local_rest_close_end lt;lglgt; NA $ week_rest_cl_begin lt;dblgt; 12 $ week_rest_cl_end lt;dblgt; 20  

Комментарии:

1. Вам нужно использовать pmin() вместо min() .