Я бы хотел отсортировать 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 () .Все намеки на решение с благодарностью получены.