upSetRパッケージで試したい離散選択データがありますが、データを使用可能な形式にする方法がわかりません。すべての可能な選択肢のバイナリ変数のセット。離散選択データをバイナリインジケータに変換する方法
サブセット{1,2,3}、{4,5}、{6,7}、... {19,20}の要素の中で、c1:c8
の8つの選択肢のセットに関する4591回の観測から成ります。 。 data.frame doors
はこのように見え、[https://www.dropbox.com/s/8iffufkt3iz6guf/doors.csv?raw=1はここにあります]。
> doors <- read.csv("https://www.dropbox.com/s/8iffufkt3iz6guf/doors.csv?raw=1",
row.names=1, stringsAsFactors=FALSE)
> doors$date <- as.POSIXct(doors$date)
> doors[sample(1:nrow(doors), 15), 1:8 ]
c1 c2 c3 c4 c5 c6 c7 c8
3038 2 4 6 9 11 14 16 20
2021 2 4 7 NA 11 14 16 20
3482 2 4 7 9 13 14 17 20
4779 2 4 6 9 11 14 16 19
3922 1 NA NA NA 11 15 NA NA
1726 2 5 NA NA 11 15 NA 20
4659 2 4 6 9 11 14 16 NA
1267 3 4 6 9 13 14 17 20
3916 2 5 7 9 13 14 16 19
5132 3 4 6 9 13 15 16 19
1846 2 4 6 NA 11 NA 16 20
1768 3 5 6 NA 13 14 16 20
3833 2 4 6 NA 13 14 16 19
1610 2 4 6 9 11 NA 16 19
4290 1 5 6 10 13 14 18 19
>
は、私は、各 観察のため、d[i] = 1
i
場合は、どこかの変数c1:c8
内に含まれているバイナリ変数、d1:d20
へdoors
データフレームにc1:c8
を変換したいです。これどうやってするの?
これを理解することができれば、以下の表は、選択変数(私が持っているもの)とバイナリ変数(私が望むもの)の関係を示しています。
> tab <- table(stack(doors[,1:8]))
> names(dimnames(tab)) <- c("door", "choice")
> rownames(tab) <- paste0("d", 1:20)
> tab
choice
door c1 c2 c3 c4 c5 c6 c7 c8
d1 382 0 0 0 0 0 0 0
d2 2193 0 0 0 0 0 0 0
d3 2016 0 0 0 0 0 0 0
d4 0 2843 0 0 0 0 0 0
d5 0 1155 0 0 0 0 0 0
d6 0 0 2607 0 0 0 0 0
d7 0 0 1349 0 0 0 0 0
d8 0 0 0 654 0 0 0 0
d9 0 0 0 2174 0 0 0 0
d10 0 0 0 197 0 0 0 0
d11 0 0 0 0 2093 0 0 0
d12 0 0 0 0 367 0 0 0
d13 0 0 0 0 1585 0 0 0
d14 0 0 0 0 0 2449 0 0
d15 0 0 0 0 0 1466 0 0
d16 0 0 0 0 0 0 3004 0
d17 0 0 0 0 0 0 354 0
d18 0 0 0 0 0 0 591 0
d19 0 0 0 0 0 0 0 1581
d20 0 0 0 0 0 0 0 2092
>
、私の 'doors'データは、同様に日付の列を持っているので、私は' ddの上でこれを使う以外< - doors [、1:8] 'と私のデータセット。 – user101089
この場合、値1:20は日付列のどこにも表示されないため、 'doors [、1:8]'は必要ありません。しかし、ええ、操作を関連する列だけに制限することは、おそらく良い考えです。 – ulfelder