基于其他两列创建 bin 列

Create bin column based on two other columns

我需要创建一个包含 bin 的列,我发现 之前的 post 对它有帮助。但是,我要创建的箱子不仅仅是另一列的分组间隔,还需要考虑第二列的阶乘数据。更准确地说,我想按季节和年份对渔获量进行分组,即捕获它们的月份 "cold"(11 月至 2 月)、"warmer"(3 月至 6 月)和 "warm"(七月至十月)和相关年份。

fish <- data.frame(month = sample(1:12,36,replace=T), year = sample(c(2015,2016,2017),36,replace=T))
fish <- fish[order(fish$year,fish$month),]

library(dplyr)
lev <- c(-Inf, 2, 6, 10, Inf)
lab <- c("cold", "warmer", "warm", "cold")
fish <- mutate(fish,season = cut(month, lev, labels = lab))

以上代码(基于前面提到的post)将创建一个bin列。但是,我需要将 "cold" 组的 Jan/Feb 部分与前一年相关联,即 Jan/Feb 2016 年应与 2015 年的 "could" 组分组。任何帮助将不胜感激!

干杯

这样做就可以了:

fish <- mutate(fish, season = case_when(month %in% c(1, 2, 11, 12) ~ "cold",
                                        month %in% c(3, 4, 5, 6) ~ "warmer",
                                        TRUE ~ "warm"))

本来可以早点想到的:只需添加另一个 "year" 列,其中 Jan/Feb 得到 "year"-1 的值即可。

fish <- mutate(fish,seasonYY = ifelse(fish$month==1|fish$month==2,fish$year-1,fish$year))

以后的分析可以使用 "new.year" 和 "season" 为正确的渔获物进行子集化。