Как установить столбцы с помощью dplyr select в зависимости от значений в столбцах в одном кадре данных - PullRequest
0 голосов
/ 06 февраля 2019

У меня есть один ряд данных:

df <- structure(list(who = "Tom", who2 = "Tom", who3 = "Harry", how_many = 48, 
                 reserve = "Mary"), class = c("tbl_df", "tbl", "data.frame"
                 ), row.names = c(NA, -1L))

# A tibble: 1 x 5
  who   who2  who3  how_many reserve
  <chr> <chr> <chr>    <dbl> <chr>  
1 Tom   Tom   Harry       48 Mary   

Я хотел бы подстроить столбцы по условию, но я получаю ошибку: Error: condition must be a logical, not list из кода ниже.

df %>% 
 if_else(who == who2, select(who3), select(how_many, reserve))

Мне кажется, я понимаю, почему я получаю ошибку - этот код был бы недействительным, если бы было более 1 строки, но не могу придумать другой способ, как это сделать в цепочке dplyr конвейерных функций.

1 Ответ

0 голосов
/ 06 февраля 2019

Один способ передать данные в блок выражений, а затем запустить более стандартный код, чтобы условно выбрать, какие столбцы вы хотите.

df %>% {if (pull(., who )==pull(., who2 )) {
  select(., who3)
} else {
  select(., how_many, reserve)
}}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...