我有一个具有以下结构的数据框test <- data.frame(col = c('a; ff; cc; rr;', 'rr; a; cc; e;'))现在,我想从中创建一个数据框,其中包含测试数据框中每个唯一值的命名列。唯一值是以“;”结尾的值 字符,并以空格开头,不包括空格。然后,对于该列中的每一行,我希望用1或0填充虚拟列。如下所示data.frame(a = c(1,1), ff = c(1,0), cc = c(1,1), rr = c(1,0), e = c(0,1)) a ff cc rr e1 1 1 1 1 02 1 0 1 1 1我尝试使用for循环和该列中的唯一值创建df,但情况变得一团糟。我有一个向量,其中包含列的唯一值。问题是如何创建1和0。我尝试了一些mutate_all()功能,grep()但是没有用。
3 回答
慕妹3242003
TA贡献1824条经验 获得超6个赞
我会用splitstackshape和mtabulate从qdapTools包装中得到一个衬里,即
library(splitstackshape)
library(qdapTools)
mtabulate(as.data.frame(t(cSplit(test, 'col', sep = ';', 'wide'))))
# a cc ff rr e
#V1 1 1 1 1 0
#V2 1 1 0 1 1
它也可以填满,splitstackshape例如@ A5C1D2H2I1M1N2O1R2T1在评论中提到的内容,
cSplit_e(test, "col", ";", mode = "binary", type = "character", fill = 0)
- 3 回答
- 0 关注
- 568 浏览
添加回答
举报
0/150
提交
取消