在某些情况下,根据另一个变量的最小值生成一个新变量

时间:2018-09-28 09:44:49

标签: r variables

我的数据集如下所示:

ID year disease  
1   2007  0       
1   2008  1     
1   2009  1    
2   2008  0     
2   2009  0    
2   2010  1    

我想创建一个新变量“ StartYear”,以记录ID首次开始患有这种疾病。 我的目标数据如下:

ID year disease StartYear 
1   2007  0    2008    
1   2008  1    2008 
1   2009  1    2008
2   2008  0    2010 
2   2009  0    2010
2   2010  1    2010

到目前为止,我知道我需要使用library(dplyr),但我尝试了此方法,但这是不正确的

data <- data%>%
          group_by(id)%>%
          arrange(id, year)%>%
          mutate(StartYear=ifelse(disease==1,Year,NA)

2 个答案:

答案 0 :(得分:2)

尝试

data %>%
        arrange(ID, year) %>%
        group_by(ID) %>%
        mutate(StartYear = year[disease == 1][1])

答案 1 :(得分:1)

尝试

library(tidyverse)

data %>%
group_by(ID) %>%
mutate( StartYear=min(year*(1/disease)) ) %>%
ungroup()