使用R中的dplyr按月创建季节变量

new*_*e14 4 r dplyr

我有一个数据集,它有一个名为月的变量,每个月作为一个字符。有没有办法与 dplyr 结合几个月来创建季节变量?我尝试了以下操作,但出现错误:

data %>%
  mutate(season = ifelse(month[1:3], "Winter", ifelse(month[4:6], "Spring", 
                     ifelse(month[7:9], "Summer", 
                            ifelse(month[10:12], "Fall", NA)))))
Run Code Online (Sandbox Code Playgroud)

有错误:

Error in mutate_impl(.data, dots) : Column `season` must be length 100798 (the number of rows) or one, not 3
Run Code Online (Sandbox Code Playgroud)

我是 R 的新手,所以非常感谢任何帮助!

Tun*_*ung 5

正确的语法应该是

data %>% mutate(season = ifelse(month %in% 10:12, "Fall",
                               ifelse(month %in% 1:3, "Winter",
                                      ifelse(month %in% 4:6, "Spring",
                                             "Summer"))))
Run Code Online (Sandbox Code Playgroud)

编辑:可能是完成工作的更好方法

天文季节

temp_data %>%
  mutate(
    season = case_when(
      month %in% 10:12 ~ "Fall",
      month %in%  1:3  ~ "Winter",
      month %in%  4:6  ~ "Spring",
      TRUE ~ "Summer"))
Run Code Online (Sandbox Code Playgroud)

气象季节

temp_data %>%
  mutate(
    season = case_when(
      month %in%  9:11 ~ "Fall",
      month %in%  c(12, 1, 2)  ~ "Winter",
      month %in%  3:5  ~ "Spring",
      TRUE ~ "Summer"))
Run Code Online (Sandbox Code Playgroud)