我想创建一个可变日期,该日期等于风暴(名称)已成为飓风或存在(如果是热带风暴)的最近日期。
这是示例数据帧:
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语句进行无数次迭代,但是距离还很远。
谢谢!
答案 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