将具有多个类别的名义变量重新编码为虚拟变量

时间:2020-11-02 03:30:51

标签: r

我正在尝试将ANES 2012数据中的一方ID七点比例变量(pid_x)压缩为虚拟变量(民主= 1,共和党= 0)。这需要删除所有缺失值并排除独立变量(4)。我可以删除NA,但是如何过滤独立变量并适当地突变新变量?是的,我对R非常陌生。非常感谢!

下面的代码提供以下错误:

“错误:mutate()输入party_id_recode有问题。 x无法回收..1(尺寸2054)以匹配..2(尺寸3)。 i输入party_id_recode是`ifelse(pid_x == 1:3,1,ifelse(pid_x == 5:7,0))“

library(tidyverse)

anesnew <- anes %>%
  na.omit(anes$pid_x) %>%  
  mutate(party_id_recode = ifelse(pid_x == 1:3, 1,
                              ifelse(pid_x == 5:7, 0)))

enter image description here

1 个答案:

答案 0 :(得分:1)

可重现的数据和预期的输出将非常有用,但是看起来您的ifelse()语句的构造不正确,可以简化:

anesnew <- anes %>%
  filter(!is.na(pid_x), pid_x != 4) %>%
  mutate(party_id_recode = case_when(pid_x < 4 ~ 1,
                                     pid_x > 4 ~ 0))

具有以下示例数据:

anes <- tibble(pid_x = c(1, 2, 3, 4, 5, 6, 7, NA))

结果是:

# A tibble: 6 x 2
  pid_x party_id_recode
  <dbl>           <dbl>
1     1               1
2     2               1
3     3               1
4     5               0
5     6               0
6     7               0