2017-12-12 10 views
0

저는 당파를 대표하는 세 가지 변수를 하나의 변수로 결합하려고합니다. 데이터는 각 응답자가 하나의 같은 세 가지 변수에 데이터가있는 곳, 모양 중 1 또는 2 :여러 변수를 하나의 코드로 다시 코딩하려고합니까?

PARTISANSHIP_D PARTISANSHIP_I PARTISANSHIP_R 
1 NA NA 
2 NA NA 
NA 1 NA 

그리고 제가 만들려고하는 것은 1에 하나 개의 변수입니다 : 기반으로 6 규모 모든 세 사람에 대한 응답. 나는이 같은 명령 ifelse dplyr

survey$partisan <- mutate(survey, partisan = ifelse(PARTISANSHIP_D==1, 6, 
ifelse(PARTISANSHIP_D==2, 5, 
ifelse(PARTISANSHIP_I==1, 4, ifelse(PARTISANSHIP_I==2, 3, ifelse(
PARTISANSHIP_R==2, 2, 1) 
))))) 

자동차

survey$partisan <- Recode(survey$PARTISANSHIP_D, "1=6; 2=5", 
survey$PARTISANSHIP_I, "1=4; 2=3", 
survey$PARTISANSHIP_R, "1=1; 2=2") 

및 일반을 사용하여이 작업을 수행하려고했습니다 :

survey$partisan <- ifelse(survey$PARTISANSHIP_D == 1, 6, 
ifelse(survey$PARTISANSHIP_D == 2, 5, 
ifelse(survey$PARTISANSHIP_I == 1, 4, 
ifelse(survey$PARTISANSHIP_I == 2, 3, 
ifelse(survey$PARTISANSHIP_R == 2, 2, 1))))) 

그러나이 중 어느 것도 작동하지 않습니다. 내가 잘못하고있는 것의 어떤 포인터라도?

답변

0

나는 몇 가지를 수행하여 작동하도록하는 mutate있어 NA를 만났을 때 멈 춥니 다.

그리고 돌연변이 결과를 survey$partisan에 할당하지 마십시오. 오히려 전체 데이터 프레임에 할당하십시오.

survey <- mutate(survey, partisan = ifelse(PARTISANSHIP_D==1, 6, 
               ifelse(PARTISANSHIP_D==2, 5, 
                 ifelse(PARTISANSHIP_I==1, 4, ifelse(PARTISANSHIP_I==2, 3, ifelse(
                 PARTISANSHIP_R==2, 2, 1) 
                 ))))) 
+0

예! 도와 줘서 고마워! 앞으로는 ifelse와 NA를 염두에 두겠습니다. – sabrina

0

깔끔한 형식으로 피벗하고 모양을 변경하려고합니다. 이 시도 : 0으로 설문 조사 dataframe의 NA를 변경 :

survey[is.na(survey)]<-0 

ifelse을하기 때문이다 라이브러리 (dplyr)

tidysurvey <- gather(survey, ## the source DF 
    key = Partisanship, ## A name for the new key varaible 
value = Code, ## A name for the new values varaible 
PARTISANSHIP_D:PARTISANSHIP_R) ## a list of which of the source DF to reshape