基于另外两列创建bin列

时间:2018-01-26 13:51:59

标签: r grouping cut mutate bins

我需要创建一个带有bin的列,我发现this上一篇文章对我有帮助。但是,我想要创建的容器不仅仅是另一列的分组间隔,还需要考虑第二列的因子数据。更确切地说,我想按季节和年份对鱼类捕捞量进行分组,即它们被捕入群体中的月份"冷" (11月至2月),"温暖" (Mar-Jun)和"温暖" (7月至10月)和相关年份。

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))

上面的代码(基于前面提到的帖子)将创建一个bin列。但是,我需要关联&#34;冷&#34;的Jan / Feb部分。与前一年相同的组,即2016年1月/ 2月应与2015年&#34;可能&#34;组。任何帮助将不胜感激!

干杯

2 个答案:

答案 0 :(得分:0)

这样可以解决问题:

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

答案 1 :(得分:0)

早些时候可以想到:只需添加另一个&#34;年&#34;列,其中Jan / Feb的值为&#34; year&#34; -1将执行。

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

以后的分析可以使用&#34; new.year&#34;和&#34;赛季&#34;为正确的捕获量的子集。

相关问题