我目前的数据格式如下(注意,这是1列,4行矩阵):
aa|bb
bb|cc|ee|ee
cc
cc|ee
我希望它显示,以便列名称为:aa,bb,cc,dd和ee。我希望有4行,这样每行计算上面匹配行中每个字符串的出现次数。
ie)
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中这样做?我会发布我的尝试,但它只是变得丑陋和复杂。任何帮助将不胜感激。
提前致谢。
答案 0 :(得分:4)
这是一个想法:
# (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