3

私は2000人の個人のデータセットを持っています。それらの 330 には、私が yn17 と名付けたベクターのデータが欠落しています (培養結果)。330 個の欠損値 (NA) のうち 17 個を「1」に置き換えて、結果が陽性培養であることを示したいと思います。

これは私が使用しようとしているコード行です:

y.n.17[sample(is.na(y.n.17),17)]=1

NAであろうとなかろうと、100個体ごとに17個体を「1」に置き換えているようです!私は何を間違っていますか?

4

1 に答える 1

1

そのベクトルnの長さをy.n.17としm < n、その数をNAとします。とを含むis.na(y.n.17)長さのブール値ベクトルです。を実行してそのベクトルからサンプリングすると、ランダムに選択された長さのベクトルが得られます。多くの場合、おそらく 1 つだけです。を行うと、長さのベクトルがリサイクルされるため、一定の間隔で挿入されます...nm TRUEn-m FALSEsample(is.na(y.n.17),17)17TRUEFALSEFALSETRUEy.n.17[sample(is.na(y.n.17),17)]=1171

あなたがすることを意味します:

na.idx      <- which(is.na(y.n.17))
replace.idx <- head(sample(na.idx), 17)
y.n.17[replace.idx] <- 1

注:データが 17 秒未満の場合にも機能するため、実行head(sample(na.idx), 17)は通常よりも堅牢です。しかし、その場合にコードでエラーが発生することを希望する場合は、 を実行してください。sample(na.idx, 17)NAy.n.17[sample(which(is.na(y.n.17)), 17)] <- 1

于 2013-05-14T22:31:24.817 に答える