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

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