Генерация новой переменной на основе минимального значения другой переменной при некоторых условиях - PullRequest
0 голосов
/ 28 сентября 2018

У меня есть набор данных, похожий на приведенный ниже:

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

Я хочу создать новую переменную «StartYear», записывающую первый раз, когда идентификаторы начали вызывать эту болезнь.мои данные цели выглядят так:

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

Пока я знаю, что мне нужно использовать библиотеку (dplyr), и я пробовал это, но это не правильно

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

Ответы [ 2 ]

0 голосов
/ 28 сентября 2018

Попробуйте

library(tidyverse)

data %>%
group_by(ID) %>%
mutate( StartYear=min(year*(1/disease)) ) %>%
ungroup()
0 голосов
/ 28 сентября 2018

Попробуйте

data %>%
        arrange(ID, year) %>%
        group_by(ID) %>%
        mutate(StartYear = year[disease == 1][1])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...