2016-11-21 1 views
0

나는 현재 발생 된 이벤트의 데이터 피드에서 가져온 데이터 프레임을 시간 순서대로 가지고 있습니다. 이전 이벤트 유형 1 & 이전 이벤트의 x는 경우 이전 이벤트 유형 1변환 및 새 열의 추가

예를 들어

없는 경우 나 이전 이벤트의 endx에 내 데이터의 각 행 위에 해당한다 새 열을 추가하고 싶습니다
player_id <- c(12, 17, 26, 3) 
event_type <- c(1, 3, 1, 10) 
x <- c(65, 34, 43, 72) 
endx <- c(68, NA, 47, NA) 
df <- data.frame(player_id, event_type, x, endx) 
df 
    player_id event_type x endx 
1  12   1  65 68 
2  17   3  34 NA 
3  26   1  43 47 
4   3   10  72 NA 

때문에 최종 결과

player_id event_type x  endx previous 
1  12   1 65  68  NA 
2  17   3 34  NA  68 
3  26   1 43  47  34 
4   3   10 72  NA  47 
+0

'변환 (DF 이전 = ifelse (래그 (DF $으로의 EVENT_TYPE == 1), 지연 (DF $으로의 endx), 지연 (DF $으로 된 X)))' –

답변

1

우리는 사용할 수 if_else

library(dplyr) 
df %>% 
    mutate(previous = if_else(lag(event_type)==1, lag(endx), lag(x))) 
# player_id event_type x endx previous 
#1  12   1 65 68  NA 
#2  17   3 34 NA  68 
#3  26   1 43 47  34 
#4   3   10 72 NA  47 
0

이것이 가장 확실한 방법은 아니지만 루프와 색인을 사용할 수 있습니다.

베이스 R에서
df$previous <- NA 
for(i in 2: nrow(df)){ 
df[ i , "previous"] <- df[ i-1 , "endx"] 
} 
관련 문제