此处使用示例数据以便于说明。 我有完整的希腊字母作为我的样本集。 我也有完整的拉丁字母。
我目前正在使用一个看起来像这样的表。这将是一小部分。我的实际数据是数十万行。
sample call letter
alpha y A
alpha y D
alpha n C
beta y F
beta y B
gamma n F
gamma y B
gamma n A
delta m E
epsilon n F
epsilon n C
epsilon n B
zeta m A
zeta y D
我想做一个决赛桌,其中希腊字母表是行,列是拉丁字母,我只提供“电话”,否则NA或0可能是条目。
最终结果会是这样的。
A B C D E F
alpha y NA n y NA NA
beta NA y NA NA NA y
gamma n y NA NA NA n
delta NA NA NA NA m NA
epsilon NA n n NA NA n
zeta m NA NA y NA NA
知道如何才能实现这样的目标吗?即使是一般指针也会很棒。
提前致谢。
答案 0 :(得分:1)
dcast
包的 reshape2
很好地完成了
library(reshape2)
dat <- structure(list(sample = c("alpha", "alpha", "alpha", "beta", "beta", "gamma", "gamma", "gamma", "delta", "epsilon", "epsilon", "epsilon", "zeta", "zeta"), call = c("y", "y", "n", "y", "y", "n", "y", "n", "m", "n", "n", "n", "m", "y"), letter = c("A", "D", "C", "F", "B", "F", "B", "A", "E", "F", "C", "B", "A", "D")), .Names = c("sample", "call", "letter"), class = "data.frame", row.names = c(NA, -14L))
dcast(dat, sample ~ letter, value.var='call')
sample A B C D E F
1 alpha y <NA> n y <NA> <NA>
2 beta <NA> y <NA> <NA> <NA> y
3 delta <NA> <NA> <NA> <NA> m <NA>
4 epsilon <NA> n n <NA> <NA> n
5 gamma n y <NA> <NA> <NA> n
6 zeta m <NA> <NA> y <NA> <NA>