データセット内の欠落した観測のすべての固有パターンを特定する方法を決定しました。ここでは、欠落した観測のパターンでそのデータセットのすべての行を選択したいと思います。これを繰り返し実行して、データセットにnパターンの欠落した観測がある場合、欠落した観測のパターンが1つしかないn個のデータセットで終了するようにします。Rを使用して、欠落した観測値が一致するデータセットの行を選択します。
私はこれを行う方法を知っていますが、私の方法はあまり効率的ではなく、一般的ではありません。私は実際のデータセットが以下の例よりはるかに大きく変動するので、より効率的でより一般的なアプローチを学びたいと思っています。
ここでは、使用しているデータセットとコードの例を示します。行列dzzから行列zzzを作成するために使用したコードを含めても構いませんが、そのコードがあれば追加できます。この例では
dd <- matrix(c(
1, 0, 1, 1,
NA, 1, 1, 0,
NA, 0, 0, 0,
NA, 1,NA, 1,
NA, 1, 1, 1,
0, 0, 1, 0,
NA, 0, 0, 0,
0,NA,NA,NA,
1,NA,NA,NA,
1, 1, 1, 1,
NA, 1, 1, 0),
nrow=11, byrow=T)
zzz <- matrix(c(
1, 1, 1, 1,
NA, 1, 1, 1,
NA, 1,NA, 1,
1,NA,NA,NA
), nrow=4, byrow=T)
for(jj in 1:dim(zzz)[1]) {
ddd <-
dd[
((dd[, 1]%in%c(0,1) & zzz[jj, 1]%in%c(0,1)) |
(is.na(dd[, 1]) & is.na(zzz[jj, 1]))) &
((dd[, 2]%in%c(0,1) & zzz[jj, 2]%in%c(0,1)) |
(is.na(dd[, 2]) & is.na(zzz[jj, 2]))) &
((dd[, 3]%in%c(0,1) & zzz[jj, 3]%in%c(0,1)) |
(is.na(dd[, 3]) & is.na(zzz[jj, 3]))) &
((dd[, 4]%in%c(0,1) & zzz[jj, 4]%in%c(0,1)) |
(is.na(dd[, 4]) & is.na(zzz[jj, 4]))),]
print(ddd)
}
4結果のデータセットは以下のとおりです。
a)
1 0 1 1
0 0 1 0
1 1 1 1
b)
NA 1 1 0
NA 0 0 0
NA 1 1 1
NA 0 0 0
NA 1 1 0
c)
NA 1 NA 1
d)
0 NA NA NA
1 NA NA NA
同じことをやってのより一般的でより効率的な方法はありますか?上記の例では、4つのデータセットは保存されませんが、実際のデータで保存します。
ありがとうございました。
マーク・ミラー
ありがとうございます。両方の答えは、私が望んでいた結果をもたらし、とても役に立ちます。マーク・ミラー –