Сортировать по дате и значению R - PullRequest
1 голос
/ 06 марта 2020

У меня есть этот фрейм данных:

a <- c(1,2,3,4,5)
b <- c(100, 300, NA, 430, 270)
c <- c('2018-02-01', '2020-02-17', '2019-10-24', '2019-10-24', '2020-02-17')
df <- data.frame(a,b,c)
names(df) <- c('id', "value", "Date")

Все, что я хочу, это отсортировать значения Date и value в порядке убывания. Однако я считаю, что Date можно упорядочить, используя rev, но с NA порядок не правильный:

df[rev(order(df$Date, df$value)),] ##

Результат, который я хочу получить, должен быть таким:

  id value       Date
2  2   300 2020-02-17
5  5   270 2020-02-17
4  4   430 2019-10-24
3  3    NA 2019-10-24
1  1   100 2018-02-01

Любые предлагают иметь дело с NA в этом кадре данных, не опуская его.

Ответы [ 3 ]

3 голосов
/ 06 марта 2020

Вы можете попробовать dplyr функции, так как arrange() сортирует NA значения до последнего по умолчанию:

df %>%
  arrange(desc(Date),desc(value))

дает:

  id value       Date
1  2   300 2020-02-17
2  5   270 2020-02-17
3  4   430 2019-10-24
4  3    NA 2019-10-24
5  1   100 2018-02-01
2 голосов
/ 06 марта 2020

Использование na.last = FALSE должно помочь:

df[rev(order(df$Date, df$value, na.last = FALSE)),] 
1 голос
/ 06 марта 2020

Если вы хотите использовать пакет data.table, вы можете сделать это следующим образом:

library(data.table)
setorderv(df, cols = c("Date","value"), order = -1, na.last=TRUE)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...