在R中创建虚拟变量,不包括某些情况为NA

时间:2017-03-10 12:57:55

标签: r

我的数据如下:

V1 V2
A  0
B  1
C  2
D  3
E  4
F  5
G  9

我想在R中创建一个虚拟变量0 = {1}1 = {2,3,4}NA = {0,5,9}

应该很简单 - 任何人都可以帮忙吗?

2 个答案:

答案 0 :(得分:1)

您可以在矢量上使用dplyr::recode

> V2
[1] 0 1 2 3 4 5 9

指定映射,对其他所有内容使用默认值:

> dplyr::recode(V2,`1` = 0, `2`=1, `3`=1, `4`=1, .default=NA_real_)
[1] NA  0  1  1  1 NA NA

答案 1 :(得分:1)

我们可以将V2转换为factor并根据我们的需要调整levels

df$dummy <- factor(df$V2)
levels(df$dummy) <- list(`0`=1, `1`=c(2, 3, 4), `NA` = c(0,5,9))

df
#  V1 V2 dummy
#1  A  0    NA
#2  B  1     0
#3  C  2     1
#4  D  3     1
#5  E  4     1
#6  F  5    NA
#7  G  9    NA