0

可能重复:
按因子拆分和组合成新列

在此处使用示例数据是为了便于说明。我有完整的希腊字母作为我的样本集。我也有完整的拉丁字母。

我目前正在使用一个看起来像这样的表。这将是一个小子集。我的实际数据是数千行的数百个。

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

知道如何实现这样的目标吗?甚至是指向什么会很棒的一般指针。

提前致谢。

4

1 回答 1

1

dcastreshape2包装中可以很好地做到这一点

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>
于 2012-08-16T20:47:25.110 回答