我试图采用代表党派关系的三个不同变量并将它们合二为一。数据看起来像这样,每个受访者只有三个变量中的一个变量的数据为1或2:
PARTISANSHIP_D PARTISANSHIP_I PARTISANSHIP_R
1 NA NA
2 NA NA
NA 1 NA
我试图创建的是基于对所有三个响应的1:6比例的一个变量。我尝试使用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")
和这样的普通ifelse命令:
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 :(得分:0)
您正在寻求转型和重塑为整洁的格式。 试试这个: 库(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
答案 1 :(得分:0)
我通过做一些事情让你的mutate工作:将调查数据框中的NA更改为0:
survey[is.na(survey)]<-0
这是因为ifelse
在遇到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)
)))))