私はNAの行列を持っていて、各行に3列ごとの平均を求めたいと思います。NAで3列ごとに平均を取る方法
set.seed(100)
a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10)
私はNAを含むcolumsの平均を見つけることができません
t(apply(a, 1, tapply, gl(3, 3), mean))
コードを使用している場合。私はコードをどのように変更できるのだろうか。どうもありがとう。
私はNAの行列を持っていて、各行に3列ごとの平均を求めたいと思います。NAで3列ごとに平均を取る方法
set.seed(100)
a <- matrix(sample(c(NA, 1:4), 90, replace = TRUE), 10)
私はNAを含むcolumsの平均を見つけることができません
t(apply(a, 1, tapply, gl(3, 3), mean))
コードを使用している場合。私はコードをどのように変更できるのだろうか。どうもありがとう。
また、3次元配列に変換してから、rowMeans
を3番目のMARGINにループして取得できます。
res <- apply(array(a, c(nrow(a), 3, 3)), 3, rowMeans, na.rm = TRUE)
all.equal(res, t(apply(a, 1, tapply, gl(3, 3),
mean, na.rm = TRUE)), check.attributes = FALSE)
#[1] TRUE
ありがとうございました。 'c(nrow(a)、3、3)'とはどういう意味ですか?ありがとう。 –
@YangYang 3D配列には3つの次元があり、最初は行、2列目、3次元です。ここでは、行数は元の行列の行数と同じです。だから私はそれを 'nrow(a)'と指定しました。次は3です。各配列スライスに3列だけが必要です。 – akrun
ありがとうございました! –
'トン(適用(、1、tapply、GL(3、3)、)、na.rm = TRUEを意味する)' –
私は馬鹿、ハハ、感謝しています。 –