そのため、多くの欠損値を含むデータセットがあります。異なる欠損パターンのデータを分離したい。欠損値パターンを要約するのに非常に便利なパッケージ「マウス」を見つけました。ただし、特定の欠落パターンを持つ行を選択したい場合、選択された行の数は、欠落パターンのマトリックスが示すカウントよりもはるかに少なくなります。
私のコードは次のとおりです。
不足しているパターンを取得するには:
library(mice)
# md.pattern returns a matrix, I convert the matrix into a data frame with the first column as its frequency in the data frame
pattern = md.pattern(data)
freq = dimnames(pattern)[[1]][-nrow(pattern)]
pattern = data.frame(pattern[1:nrow(pattern)-1, 1:ncol(pattern)-1], row.names = NULL)
pattern$freq = freq
pattern = pattern[order(freq,decreasing = TRUE),]
ただし、欠落しているパターンを特定のパターンで手動でカウントしようとすると、pattern
. カウントははるかに小さいです。
count = 0
for (i in 1:nrow(data)){
# match the missingness by the entire row
if (all(!is.na(data[i, names(data)[1:ncol(pattern)-1]]) == test[1,1:ncol(pattern)-1])){
count = count +1
}
}
誰かがどこがうまくいかないのか考えていますか? ありがとう!
データには多くの変数 (合計 107) と 70000 以上の観測値があります。nhanes
このコードは、mice
パッケージ内のサンプル データでうまく機能します。しかし、私のデータファイルではうまくいきません。
例えば:
V1 V2 V3 V4 V5
1 NA 3 5 2
NA 3 23 2 9
NA 3 90 7 5
3 3 2 34 NA
3 NA 2 1 3
4 NA 7 3 1