私は2000人の個人のデータセットを持っています。それらの 330 には、私が yn17 と名付けたベクターのデータが欠落しています (培養結果)。330 個の欠損値 (NA) のうち 17 個を「1」に置き換えて、結果が陽性培養であることを示したいと思います。
これは私が使用しようとしているコード行です:
y.n.17[sample(is.na(y.n.17),17)]=1
NAであろうとなかろうと、100個体ごとに17個体を「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