1

時系列の調査機会にわたって複数の個人のバイナリ出現マトリックスを作成しようとしています。ソース データは、個人 ID フィールドと、その個人の肯定的な発生に対応する機会番号フィールドを含むデータフレームです。出力マトリックスに個々の ID を保持する必要があります。複数の機会に正の発生があった個人は、ソース データセットで 1 回以上発生することに注意してください。以前の投稿からコードを適応させようとしましたが、動作させることができません。

ソース データの例と目的のマトリックスのスニペットを次に示します。

ソース:

ID1   1
ID1   3
ID1   7
ID2   4
ID3   2
ID3   6
ID4   8

出力:

ID1   10100010
ID2   00010000
ID3   01000100
ID4   00000001
4

1 に答える 1

1

私はあなたのデータ名を与えました:

names(dat) <- c("id", "num")

これを整理するために、長さ 8 のベクトルを作成し、適切なスポットを 1 で埋める簡単な関数を作成しました。

rep8 <- function(x){
  zeroes <- rep(0, 8)
  zeroes[x] <- 1
  zeroes
}

次に、この関数を各IDに適用し、rbindそれらをマトリックスに適用します

do.call(rbind, tapply(dat$num, dat$id, rep8))

    [,1] [,2] [,3] [,4] [,5] [,6] [,7] [,8]
ID1    1    0    1    0    0    0    1    0
ID2    0    0    0    1    0    0    0    0
ID3    0    1    0    0    0    1    0    0
ID4    0    0    0    0    0    0    0    1
于 2013-04-09T13:58:17.703 に答える