R语言 虚拟变量问题:如何创建具有重复ID的伪变量数据集?

hgc7kmma  于 2023-03-05  发布在  其他
关注(0)|答案(2)|浏览(160)

我有这个df

df = data.frame(ID = rep(1:3,each=5),
                group = c('A','B','A','A','C','B','D','C','B','A','A','B','B','A','C') )

并且我希望创建哑变量列A、B、C和D,其结果是如果存在值A,则即使对于ID号1存在许多值A,我们也使值为1。
所需输出如下所示

ID A B C D
1  1 1 1 1 0
2  2 1 1 1 1
3  3 1 1 1 0
kadbb459

kadbb4591#

+(as.data.frame.matrix(table(df)) > 0)

#  A B C D
#1 1 1 1 0
#2 1 1 1 1
#3 1 1 1 0

或者使用pivot_wider

tidyr::pivot_wider(df, names_from = "group", values_from = "group", 
                   values_fn = ~ +(length(.x) > 0), values_fill = 0)
y53ybaqx

y53ybaqx2#

使用dcast

library(data.table)
dcast(setDT(unique(df)), ID ~ group, length)
  • 输出
ID A B C D
1:  1 1 1 1 0
2:  2 1 1 1 1
3:  3 1 1 1 0

相关问题