我有一个带有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
这样做的好方法是什么?谢谢!
答案 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