2017-09-29 3 views
2

10 개의 변수가있는 데이터 프레임이 있습니다. 변수 1-9의 각 열에 대해 그 행의 열 번째 변수가 NA 인 경우 값을 NA으로 바꾸고 싶습니다. 아무것도하기 전에R - 반복하여 열의 값을 변경하는 방법

는 데이터는 다음과 같습니다

var1 var2 var3 ... var10 
    1  3  3    2 
    0  0  0    NA 
    9  3  7    4 
    0  0  0    NA 
    .  .  .    . 
    .  .  .    . 
    .  .  .    . 

데이터는 다음과 같이하는 목표는 다음과 같습니다

var1 var2 var3 ... var10 
    1  3  3    2 
    NA  NA NA    NA 
    9  3  7    4 
    NA  NA NA    NA 
    .  .  .    . 
    .  .  .    . 
    .  .  .    . 

을 내가 사용하고 코드는 다음과 같다, 실행 번 각 변수에 대해 1-9 :

data <- data %>% 
    mutate(var1= replace(var1,   # var1 on this line would be replaced by var2, var3, etc. 
         which(is.na(var10)), NA)) 

그러나 복사/붙여 넣기보다 더 좋은 방법이있을 것입니다. 해당 코드를 9 번, 각 변수에 대해 1-9 번 반복하십시오.

나는 일반적으로 코딩하기가 비교적 쉽습니다. this post을 (를) 기반으로하는 무언가가 적용 가능하지만 작동하도록하는 방법을 찾지 못했습니다. 모든 솔루션을 크게 주시면 감사하겠습니다!

답변

2

우리가 dplyr를 사용하는 경우, 다음 mutate_at

data %>% 
    mutate_at(1:9, funs(replace(., is.na(data$var10), NA))) 

사용할 수 있습니다 또는 우리는 이것은 또한 base R

수행 할 수 있습니다 purrr

library(purrr) 
map2_df(data[1:9], data[10], ~replace(.x, is.na(.y), NA)) 

을 사용할 수 있습니다

data[1:9] <- data[1:9]*NA^is.na(data$var10) 
관련 문제