сортировка месяцев в R с подсчетом или суммированием - PullRequest
0 голосов
/ 18 октября 2018

Я пытаюсь отсортировать месяцы с помощью R и получаю следующее:

```{r}
result <- mydata %>%
count(months(as.Date(orderdate)))
result
```

В результате получаем значения monts и количество заказов.Однако месяцы не упорядочены по месяцам.Как я могу отсортировать это по месяцам?

Я уже пытался использовать «порядок» и «фактор», однако это не работало правильно.Как я могу использовать короткий код и правильно заказать?

Спасибо,

Роланд

Ответы [ 3 ]

0 голосов
/ 18 октября 2018

Do:

count(
  factor(months(as.Date(orderdate)), month.name)
)

, поскольку months() "возвращает [s] символьный вектор имен [месяца] в используемой локали" и является менее хрупким решением, чемжестко кодируемые названия месяцев в США / Англии.

0 голосов
/ 18 октября 2018

Предполагается, что ваш язык говорит на английском языке.Это связано с тем, что встроенная переменная month.name использует английские названия месяцев.

Прежде всего, создайте набор данных, поскольку вы его еще не опубликовали.

set.seed(1)
d <- seq(as.Date("2017-01-01"), Sys.Date(), by = "month")
mydata <- data.frame(orderdate = sample(d, 1e2, TRUE))

Теперь проблема.Обратите внимание, что order является его собственным обратным, тот факт, что этот ответ использует.

library(dplyr)
library(lubridate)


result <- mydata %>%
  count(months(as.Date(orderdate)))

inx <- order(month.name)
result[order(inx), ]
0 голосов
/ 18 октября 2018

Поскольку у вас нет предоставленных образцов данных, я не могу проверить, действительно ли они работают в вашем конкретном случае.Преобразование данных о месяцах в фактор работает, но сначала вам нужно будет указать названия месяцев (на языке ваших данных), так как R не знает, как вы хотите, чтобы они были упорядочены.Таким образом, создание фактора без определения уровней приведет только к алфавитному порядку, который не корректен в течение нескольких месяцев.

library(dplyr)

result <- mydata %>%
  mutate(ordered_months = factor(months(as.Date(orderdate)), 
                                 levels=c("January", "February", ...))) %>% # insert all month-names here
  count(ordered_months)
result

... должно работать.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...