试图将多个变量重新编码为一个?
Trying to recode multiple variables into one?
我正在尝试将代表党派关系的三个不同变量合并为一个。数据如下所示,其中每个受访者只有三个变量之一的数据为 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)))))
但其中 none 有效。我做错了什么?
您希望调整并重塑为整洁的格式。
试试这个:
图书馆(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
我通过做几件事让你的 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)
)))))
我正在尝试将代表党派关系的三个不同变量合并为一个。数据如下所示,其中每个受访者只有三个变量之一的数据为 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)))))
但其中 none 有效。我做错了什么?
您希望调整并重塑为整洁的格式。 试试这个: 图书馆(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
我通过做几件事让你的 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)
)))))