2017-01-12 1 views
1

에서 NA의 이용 데이터를 대체 : COL2가 값을 가지면 (컬럼 3 및 4의 값을 포함하는 경우에도)I 같은 보이는 데이터 프레임이 여러 열

ID col2 col3 col4 
1  5 NA NA 
2  NA NA 1 
3  5 NA NA 
4  19 NA 1   

, 즉 셀 변경하지 않아야한다. 그러나 col2에 "NA"값이 포함되어 있으면 col3 또는 col4가 아닌 경우 해당 값을 반환하고 싶습니다.

아래에 표시된 출력은 행 2가 현재 "1"로 표시되어 있습니다.

ID col2 col3 col4 
1  5 NA NA 
2  1 NA 1 
3  5 NA NA 
4  19 NA 1 

나는이 $ 또는 []를 사용하여 각 열을 참조하여 수동으로 수행 할 수 있습니다 알고 있지만,이은에 대한 루프 또는 적용을 사용하여 어떻게 할 수 있는가?

감사

+0

가 가정 값을 대체 할 논리적 인덱스를 생성 할 수 있습니다 'col2'에 NA 요소가 있습니까? 어느 것을 고려해야합니까? – akrun

+0

큰 질문입니다. 어느 쪽이든 상관 없어요! – Workhorse

답변

1

우리는 ifelse

df1$col2 <- with(df1, ifelse(is.na(col2), pmax(col3, col4, na.rm = TRUE), col2)) 
df1$col2 
#[1] 5 1 5 19 

와 함께 할 또는 모두 COL3 및 col4에 대한 nonNA 값이있는 경우

i1 <- is.na(df1$col2) 
df1$col2[i1] <- do.call(pmax, c(df1[i1, 3:4], na.rm = TRUE)) 
+1

작동! 고맙습니다! – Workhorse

관련 문제