私は製品プロトタイプテストデータを含むデータセットを持っています。すべてのテストがすべてのロットで実行されたわけではなく、すべてのテストが同じサンプルサイズで実行されたわけではありません。説明するために、この場合は考慮してください。過去には集計を使用したna.omitとna.passのブレンド?
> test <- data.frame(name = rep(c("A", "B", "C"), each = 4),
var1 = rep(c(1:3, NA), 3),
var2 = 1:12,
var3 = c(rep(NA, 4), 1:8))
> test
name var1 var2 var3
1 A 1 1 NA
2 A 2 2 NA
3 A 3 3 NA
4 A NA 4 NA
5 B 1 5 1
6 B 2 6 2
7 B 3 7 3
8 B NA 8 4
9 C 1 9 5
10 C 2 10 6
11 C 3 11 7
12 C NA 12 8
を、私はaggregate(cbind(var1, var2) ~ name, test, FUN = mean, na.action = na.omit)
(またはデフォルト設定)で簡単にされているミスマッチした繰り返しの例に対処しなければなりませんでした。私は、var1
の3つの値とvar2
の4つの値の各ロットの平均を取得します。
残念ながら、これは、この場合には完全に欠落したデータセットたくさんA
で私を残す:私はna.pass
を使用する場合は、しかし、私はまた私が欲しいものを得ることはありません
aggregate(cbind(var1, var2, var3) ~ name, test, FUN = mean, na.action = na.omit)
name var1 var2 var3
1 B 2 6 2
2 C 2 10 6
:
aggregate(cbind(var1, var2, var3) ~ name, test, FUN = mean, na.action = na.pass)
name var1 var2 var3
1 A NA 2.5 NA
2 B NA 6.5 2.5
3 C NA 10.5 6.5
var1
にはNA
のインスタンスが含まれていたので、良いデータが失われました。
私がしたいことはある:1つの以上の実際の値が存在する場合〜name
はmean()
のNA
の
varN
のmean()
場合、すべてのユニークな組み合わせの出力として
NA
varN
〜name
私はこれが前提であると推測していますttyシンプルですが、私はちょうど方法を知らない。このようなことにddply
を使用する必要がありますか?もしそうなら...私はそれを避ける傾向にある理由は、私はそうのようaggregate()
に本当に長い同等物を書き終わるということです。
ddply(test, .(name), summarise,
var1 = mean(var1, na.rm = T),
var2 = mean(var2, na.rm = T),
var3 = mean(var3, na.rm = T))
うん...そう、その結果は明らかに私が欲しいものを行います。とにかく、1)aggregate()
でこれを行う方法、または2)ddply
の短い構文がある場合は、私はとにかく質問を残します。
1つの回答が再発しました。 'ddply' [こちら](http://stackoverflow.com/questions/10787640/r-ddply-summarize-with-large-number-of-columns)基本的に、データフレームを溶かし、関心のある変数と元の列名の組み合わせに基づいて 'mean()'を適用し、それを元の形に戻します。他のもの? – Hendy