2017-02-27 10 views
0

나는 아래와 같은 작은 물갈음을 가지고있다. 값에 문자 "Y"가 사용되는지 확인하십시오.새 열의 값으로 열 이름을 사용하는 새 열?

require(tidyverse) 
df <- data_frame(a = c('Y', NA, 'Y'), b = c(NA, 'Y', NA)) 
df 

# A tibble: 3 × 2 
     a  b 
    <chr> <chr> 
1  Y <NA>  
2 <NA>  Y 
3  Y <NA> 

은 그리고 다른 두 개 (또는 그 이상) 그러나 컬럼의 이름과 일치하도록 "Y"를 변경 결합 새 열을 만들려고합니다. 이 경우 "a"와 "b". 이와 같이

# A tibble: 3 × 3 
     a  b c 
    <chr> <chr> <chr> 
1  Y <NA> a 
2 <NA>  Y b 
3  Y <NA> a 

나는 각 행에 하나 이상의 "Y"가 없음을 확신합니다. 나는이

+4

묻는 많은 시간과 which을 사용할 수 있습니다 gather 또는 mutate를 사용하여 해결할 수 있다고 생각하지 않습니다!'이름 (DF) [max.col (is.na (DF))] –

+0

와우, 고마워요! –

답변

0

우리는 전에 arr.ind=TRUE

ind <- which(!is.na(df), arr.ind = TRUE) 
df$c <- names(df)[ind[,2][order(ind[,1])]] 
df$c 
#[1] "a" "b" "a"