R: как назначить сезоны месяцам (фактор) - PullRequest
0 голосов
/ 01 декабря 2019

в моем наборе данных у меня есть следующий вектор месяцев:

bank$month <-factor(bank$month, 
                       levels = c("jan", "feb", "mar", "apr", "may", "jun",
                                  "jul", "aug", "sep", "oct", "nov", "dec"))

Я хотел бы назначить вектор из 4 сезонов для каждого месяца. Я попробовал случай, когда / если еще (ни одна из этих работ). Любые предложения, как решить эту проблему?

Большое спасибо, Кася

Ответы [ 2 ]

2 голосов
/ 01 декабря 2019

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

library(dplyr)
library(forcats)

dates = tibble(
  month = factor(sample(month.abb,40,replace = TRUE),levels = month.abb)
)
dates = dates %>% mutate(
  season = fct_collapse(
    month,
    'Spring' = month.abb[3:5],
    'Summer' = month.abb[6:8],
    'Fall' = month.abb[9:11],
    'Winter' = month.abb[c(12,1,2)]
  )
)

# check them:
table(dates$month,dates$season)

Вы можете сделать это вручную с помощью switch утверждение, но зачем изобретать велосипед!

1 голос
/ 01 декабря 2019
library(tidyverse)    
bank %>%
      mutate(Month_No = match(str_to_title(month), month.abb)) %>%
      mutate(Season = case_when(Month_No %in% 3:5 ~ 'Spring',
                                Month_No %in% 6:8 ~ 'Summer',
                                Month_No %in% 9:11 ~ 'Autumn',
                                TRUE ~ 'Winter'))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...