Как мне использовать dplyr ::range для сортировки в первую очередь NA? - PullRequest
0 голосов
/ 07 февраля 2019

Я бы хотел отсортировать flights в порядке возрастания dep_time с NA с первым, используя dplyr 'arrange в dplyr_0.8.0.arrange по умолчанию - список NA s last.

Я думал, что

arrange(flights,desc(is.na(dep_time)),dep_time) 

будет работать, но NA s по-прежнему последним.На самом деле, и

desc(is.na(dep_time)) 

, и

is.na(dep_time)

производят одинаковое расположение.Почему это так и как я могу получить желаемую сортировку?

Редактировать: вот минимальный, воспроизводимый пример.

library(tidyverse)
set.seed(1)
df <- tibble(x = sample(c(NA,NA,1:4)))
arrange(df,desc(is.na(x)),x)
arrange(df,is.na(x),x)

Вот вывод.

...
> arrange(df,desc(is.na(x)),x)
# A tibble: 6 x 1
      x
  <int>
1     1
2     2
3     3
4     4
5    NA
6    NA
> arrange(df,is.na(x),x)
# A tibble: 6 x 1
      x
  <int>
1     1
2     2
3     3
4     4
5    NA
6    NA

Этоработает как положено, если я mutate(ind = is.na(x)) и затем сортирую по переменной ind, а не по выражению is.na(x).Вот мой sessionInfo () .Все намеки на решение с благодарностью получены.

1 Ответ

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

Это было исправлено загрузкой последней версии dplyr_0.8.0:

devtools::install_github("tidyverse/dplyr")
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...