我有入学月份的数据。我想以整齐的方式做
df$qrtr[df$amonth %in% 1:3]<- "a"
df$qrtr[df$amonth %in% 4:6] <- "b"
df$qrtr[df$amonth %in% 7:9]<- "c"
df$qrtr[df$amonth %in% 10:12]<- "d"
答案 0 :(得分:0)
如@Tung所建议,可以使用dplyr的case_when:
df %>%
mutate(qtr = case_when(
.$amonth %in% 1:3) ~ 'a',
.$amonth %in% 4:6) ~ 'b',
.$amonth %in% 7:9) ~ 'c',
.$amonth %in% 10:12) ~ 'd',
TRUE ~ NA))
更具可读性的方法是组合。 dplyr管道的方法是为了提高可读性,因此可以结合使用以下方法:
seasons <- rep(c('a','b','c','d'), each=3)
df %>% mutate(qtr=seasons[amonth])
第二行等效于df$qtr <- seasons[df$amonth]
,这也许是跳过燃烧以获取水的方法。但是,如果与其他操作结合使用,则其中一项更为合适。
答案 1 :(得分:0)
为什么不为此使用lubridate?如果“月”列是日期对象,则可以
df %>% mutate(qtr = lubridate::floor_date(amonth, "3 month"))