根据组内差异将变量分配给最短日期

时间:2018-12-20 22:54:16

标签: r group-by mutate

我想创建一个可变日期,该日期等于风暴(名称)已成为飓风或存在(如果是热带风暴)的最近日期。

这是示例数据帧:

hurricane<- data.frame("year"=c(2011,2012,2013,2011,2012,2013), 

"category"=c("TS","H","H","TS","TS","TS"), 

"name"=c("alex","alex","alex","bob","bob","bob"))

我想要一个日期变量,该变量等于飓风被归类为飓风的最近日期,或者等于风暴从未发生过的风暴出现的最新日期。也就是说,每次观察的Alex的日期将为2012年,而Bob的日期将为2011年。

到目前为止,我一直在尝试对group_by%>%mutate和ifelse语句进行无数次迭代,但是距离还很远。

谢谢!

1 个答案:

答案 0 :(得分:0)

   library(tidyverse)
   hurricane%>%
            group_by(name)%>%
            mutate(a =  if_else(any(category=='H'),year[category=='H'][1],min(year)))
    # A tibble: 6 x 4
    # Groups:   name [2]
       year category name      a
      <dbl> <fct>    <fct> <dbl>
    1  2011 TS       alex   2012
    2  2012 H        alex   2012
    3  2013 H        alex   2012
    4  2011 TS       bob    2011
    5  2012 TS       bob    2011
    6  2013 TS       bob    2011