繁体   English   中英

如何将单个列列表转换为R中的项目矩阵?

[英]How do I transform a single column list to item matrix in R?

我目前的数据格式如下(注意,这是1列,4行矩阵):

aa|bb  
bb|cc|ee|ee  
cc  
cc|ee

我希望它显示,以便列名称为:aa,bb,cc,dd和ee。 我希望有4行,这样每行计算每个字符串在上面匹配行中的出现次数。

即)

aa bb cc dd ee  
 1  1  0  0  0  
 0  1  1  0  2  
 0  0  1  0  0   
 0  0  1  0  1 

有谁知道如何在R中这样做? 我会发布我的尝试,但它只是变得丑陋和复杂。 任何帮助将非常感激。

提前致谢。

这是一个想法:

# (You'll use as.vector() on your matrix to get the vector x.)
x <- c("aa|bb", "bb|cc|ee|ee", "cc", "cc|ee") 

levs <- c("aa", "bb", "cc", "dd", "ee")
ll <- strsplit(x, "\\|")
t(sapply(ll, function(X) table(c(levs, X)))) - 1
#      aa bb cc dd ee
# [1,]  1  1  0  0  0
# [2,]  0  1  1  0  2
# [3,]  0  0  1  0  0
# [4,]  0  0  1  0  1

这可能会澄清(至少一点)最后一行代码的作用:

table(c(levs, c("dd", "cc", "cc", "cc"))) - 1
# 
# aa bb cc dd ee 
#  0  0  3  1  0 

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM