我有一个数据集,它有一个名为月的变量,每个月作为一个字符。有没有办法与 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 的新手,所以非常感谢任何帮助!
正确的语法应该是
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)