を意味します。これらの値は、対応する行の平均値である必要があり行によってNA値を交換し、私はで取得した行列から、私のNA値を置き換えたい
read.table(…)
。すなわち、表の次の行
:
1 2 1 NA 2 1 1 2
が
1 2 1 1.43 2 1 2
なるありがとうございました。
を意味します。これらの値は、対応する行の平均値である必要があり行によってNA値を交換し、私はで取得した行列から、私のNA値を置き換えたい
read.table(…)
。すなわち、表の次の行
:
1 2 1 NA 2 1 1 2
が
1 2 1 1.43 2 1 2
なるありがとうございました。
x[is.na(x)] <- mean(x, na.rm=TRUE) # for vectors or for a matrix as a whole
t(apply(x, 1, function(xv) { xv[is.na(xv)] <-
mean(xv, na.rm=TRUE)
return(xv)}
)) # for a row-oriented sol'n
これは行列全体の平均を返しませんか? –
そうです。私は彼が行指向のソリューションを望んでいたが、1つを入れます。 –
a = c(NA, 1, 2, 3, 10)
a[which(is.na(a)==TRUE)] = mean(a,na.rm = T)
これは動作するはずですが、不必要に複雑です。 is.na(a)はブール値のベクトルを返します。したがって、== TRUEは冗長です。長さ<= 'length(a)'のベクトルまたはTRUEとFALSEを含む長さ '' length(a)のベクトルのどちらかでベクトルをインデックスすることができるので、 ''は必要ではありません。 TRUE/FALSEに強制されます)。最後に、TRUEとFALSEにTとFを使用しないでください。上書きされる可能性があるからです。 –
私はより多くの訓練の面を考慮しました:d – user702846
行列については、同じ問題が、すべての平均と置き換えられます。 –
ここではいくつかのサンプルデータです。
m <- matrix(1:16, nrow=4)
m[c(1,4,6,11,16)] <- NA
ここで私は行の手段でミスを記入します。
k <- which(is.na(m), arr.ind=TRUE)
m[k] <- rowMeans(m, na.rm=TRUE)[k[,1]]
データはdata.frame
になります。最初にas.matrix
を使用して行列に変換する必要があります。あなたはそのフォーマットでそれを残したいと思うかもしれません。戻る使用as.data.frame
を変換する。
なぜあなたはこれをやりたいのですか* row-wise *?変数をオブジェクト/サンプルと混同していないかどうかだけを確認します。通常、これは列単位で行い、各変数の平均を計算し、その変数を使用して変数内の「NA」を置き換えます。 –
また、 'read.table()'はdata.frameを返します。あなたはデータフレームか適切なマトリックスについて話していますか? –
@ GavinSimpsonこの理由の1つは、測定に使用する質問を繰り返しているアンケートデータです。他の質問の手段は、不足しているデータを置き換えるために使用されます。 – Irwin