我的数据如下:
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}
应该很简单 - 任何人都可以帮忙吗?
答案 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