代码之家  ›  专栏  ›  技术社区  ›  M.Teich

基于其他两列创建bin列

  •  0
  • M.Teich  · 技术社区  · 8 年前

    我需要创建一个列,其中包含我找到的垃圾箱 this 以前的帖子很有用。然而,我要创建的容器不仅仅是另一列的分组间隔,还需要考虑第二列的阶乘数据。更准确地说,我想按季节和年份将渔获物分为“冷”(11月至2月)、“暖”(3月至6月)和“暖”(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列。然而,我需要将“冷”组的1月/2月部分与前一年相关联,即2016年1月/2月应与2015年的“可能”组相关联。任何帮助都将不胜感激!

    干杯

    2 回复  |  直到 8 年前
        1
  •  0
  •   phiver    8 年前

    这样就可以做到:

    fish <- mutate(fish, season = case_when(month %in% c(1, 2, 11, 12) ~ "cold",
                                            month %in% c(3, 4, 5, 6) ~ "warmer",
                                            TRUE ~ "warm"))
    
        2
  •  0
  •   M.Teich    8 年前

    可能早就想到了:只需添加另一个“年”列,其中一月/二月的值为“年”,1就可以了。

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

    以后的分析可以使用“新的一年”和“季节”来划分正确的渔获量。

    推荐文章