将R数据帧转换为宽格式,并将存在/不存在调用作为值

时间:2018-01-05 06:52:14

标签: r transpose

我的数据框看起来像这样:

ID  cat1  cat2  cat3
1  cat1_A  cat2_A  cat3_A
2  cat1_B  cat2_A  cat3_B
3  cat1_B  cat2_B  cat3_A

我现在想将此转换为一种转置表,使用每列中的所有值作为新列名称,并将相应列名称的0/1(存在/不存在)调用为新值:

ID cat1_A cat1_B cat2_A cat2_B cat3_A cat3_B
1 1 0 1 0 1 0
2 0 1 1 0 0 1
3 0 1 0 1 1 0

我希望能清楚我想做什么,不知道如何以更好的方式解释它。任何帮助将不胜感激! 谢谢!

1 个答案:

答案 0 :(得分:2)

我们可以使用mtabulate

中的qdapTools
res <- cbind(df1[1], mtabulate(as.data.frame(t(df1[-1]))))
row.names(res) <- NULL
res
#   ID cat1_A cat2_A cat3_A cat1_B cat3_B cat2_B
#1  1      1      1      1      0      0      0
#2  2      0      1      0      1      1      0
#3  3      0      0      1      1      0      1