2017-02-14 5 views
0

나는이 모양이 df이며 change을 생성하려면 코드를 실행해야합니다. change은 영구적 인 긍정에 처음으로 outcome (outcome = 1)으로 정의됩니다.그룹별로 지연 변수를 사용합니다.

  • ID는 결과가 visit X 후에서 1 경우에만 1 될 수있는 각 visit
  • change 변수에 outcome 값으로 5 visits를 가지고 다음과 같이

    논리는

  • 예를 들어, id 2는 time 2에서 change = 1을 가질 수 없습니다. outcome은 다시 neg 결과는 time입니다. 3.
  • 추가적인 주름은 누락 된 데이터를 포함합니다. 이 매장의 값이 1이 될 수 있기 때문에 visit 2에서 id 3 전위 결과는 1 또는 0 일 수 후 change 원하는 출력 변수 1.

내 데이터되어 있어야

id visit outcome change 
1 1  0  0 
1 2  0  0 
1 3  0  0 
1 4  1  1 
1 5  1  0 

2 1  0  0 
2 2  1  0 
2 3  0  0 
2 4  1  1 
2 5  1  0 

3 1  0  0 
3 2  NA  1 
3 3  1  1 
3 4  1  0 
3 5  1  0 

답변

1

dplyr으로 간편하게 수행 할 수 있습니다.

library(dplyr) 
df <- data.frame(id = rep(c(1,2,3), each = 5), visit = rep(1:5, 3), 
     outcome = c(0, 0, 0, 1, 1, 0, 1, 0, 1, 1, 0, NA, 1,1,1)) 
df %>% 
group_by(id) %>% 
mutate(change = as.numeric(lead(outcome) == 1 & outcome == 1), 
     change = ifelse(visit == 5, 0, change), 
     change = ifelse(is.na(change), lead(change), change))