R data.table - 一列中的分类值到多列中的二进制值

时间:2016-07-19 08:31:56

标签: r data.table

我有一个带有2列ID和X的data.table,其中X包含分类值(a,b,c)

ID X
1  a
2  c
3  b
4  c

我想将X转换为3个二进制列,其中列名是a,b和c

ID a b c
1  1 0 0
2  0 0 1
3  0 1 0
4  0 0 1

这样做的好方法是什么?谢谢!

2 个答案:

答案 0 :(得分:2)

使用dcast中的data.table

dcast(dt, ID ~ X, value.var = 'X', fun = length)
#   ID a b c
#1:  1 1 0 0
#2:  2 0 0 1
#3:  3 0 1 0
#4:  4 0 0 1

答案 1 :(得分:0)

以下是dplyr/tidyr

中的一个选项
library(dplyr)
library(tidyr)
df1 %>% 
     mutate(V1 = 1) %>% 
     spread(X, V1, fill= 0)
#  ID a b c
#1  1 1 0 0
#2  2 0 0 1
#3  3 0 1 0
#4  4 0 0 1