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



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

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

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

我们可以使用 qdapTools 中的mtabulate

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

相关内容

最新更新