[英]R: how to assign seasons to months (factor)
在我的数据集中,我有以下月份向量:
bank$month <-factor(bank$month,
levels = c("jan", "feb", "mar", "apr", "may", "jun",
"jul", "aug", "sep", "oct", "nov", "dec"))
我想为每个月分配一个 4 个季节的向量。 我尝试过 case when/if else(这些都不起作用)。 任何建议如何解决这个问题?
非常感谢,卡西亚
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
语句手动执行此操作,但为什么要重新发明轮子!
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'))
您可以使用(forcats)
:
library(tidyverse)
bank %>% fct_recode(month, "A" = "jan", "A" = "feb")
...等等。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.