ранжировать даты с дубликатами в R - PullRequest
1 голос
/ 02 апреля 2020

Начиная с этого кадра данных

DF <- data.frame(class= c('a','b','c','d','e','f'), 
                 date = c('2018-01-09', '2018-01-09', '2018-01-06', '2018-01-06', '2018-01-07', '2018-01-07'))
DF$date  <-as.Date(DF$date, format = '%Y-%m-%d') 

Я бы хотел оценить дату столбца, чтобы получить этот результат

DF <- data.frame(class= c('a','b','c','d','e','f'), 
                 date = c('2018-01-09', '2018-01-09', '2018-01-06', '2018-01-06', '2018-01-07', '2018-01-07'),
                 rank = c(3,3,1,1,2,2))
DF$date  <-as.Date(DF$date, format = '%Y-%m-%d') 

Я пробовал это

DF <- DF %>% mutate(rank = rank(date)) %>% arrange(date)

, но это дает мне

DF <- data.frame(class= c('c','d','e','f','a','b'), 
                 date = c('2018-01-06', '2018-01-06', '2018-01-07', '2018-01-07', '2018-01-09', '2018-01-09'),
                 rank = c(1.5,1.5,3.5,3.5,5.5,5.5))

1 Ответ

2 голосов
/ 02 апреля 2020

Мы можем использовать dense_rank

library(dplyr)
DF %>%
     mutate(rank = dense_rank(date))
#  class       date rank
#1     a 2018-01-09    3
#2     b 2018-01-09    3
#3     c 2018-01-06    1
#4     d 2018-01-06    1
#5     e 2018-01-07    2
#6     f 2018-01-07    2
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...