複数のテスト(パラメータと呼ばれる)を異なる「ダイ」に適用するデータがあり、各「ダイ」は特定のテストを合格または不合格にすることができます。ここで複数の出力を持つファンクションを使用する
はalldie
die parameter firstfailure
1 1 Resistance_Test DevID (Ohms) 428 FALSE
2 1 Diode_Test SUBLo (V) 353 FALSE
3 1 Gate_Test V1_WELL (V) 361 FALSE
4 1 Gate_Test V2_WELL (V) 360 FALSE
5 1 Gate_Test V3_WELL (V) 361 FALSE
6 1 Class_Test Cluster Class2 (#) 6 FALSE
7 1 Class_Test Column Class1 (#) 2 TRUE
8 1 Class_Test Cluster Class1 (#) 2 NA
私は完全なデータセットを提供する場合は、あなたがより多くの異なる、(...、1,2,3番)複数のダイを参照してくださいねという名前のデータフレームのごく一部であります最初の失敗では、テストが実行されなかった場合はFALSE(成功した場合)またはTRUE(失敗した場合)および場合によってはNAと表示されます。
は、私は、各テスト(パラメータ)、渡された番号を経由死ぬの数、および関数を記述して、これがないtapply
ly <- function(data) {
ndie <- sum(!is.na(data))
npass <- ndie - sum(data,na.rm = TRUE)
yield <- npass/ndie
c(npass,ndie,yield)
}
使用して、渡された割合を計算することができると思いました私が欲しいの計算が、その後lim_yldがどのように見える(最初の数行のみ、ともtapply
アルファベット順にパラメータを置く)出力
tapply(alldie$firstfailure, alldie$parameter, ly)) -> lim_yld
を使用するために、いくつかの困難を生じ
件の$`Class_Test Cluster Class1 (#) 2`
[1] 76 76 1
$`Class_Test Cluster Class2 (#) 6`
[1] 89 89 1
$`Class_Test Column Class1 (#) 2`
[1] 76.0000000 89.0000000 0.8539326
質問:
私は、より読みやすいデータフレームにデータを取得できますか?このようなもの:
Parameter Npass Ndie Proportion Class_Test Cluster Class1 (#) 2 76 76 1.0000000 Class_Test Cluster Class2 (#) 6 89 89 1.0000000 Class_Test Column Class1 (#) 2 76 89 0.8539326
このデータフレーム内のパラメータを元の順序で並べ替えるにはどうすればよいですか?
ありがとう!
私はあなたの例のデータを読み込むしようとしたが、多分 'lapply(スプリット(alldie $ firstfailure、alldie $パラメータ)していません、ly) 'あなたが何をやっているのか、もっと簡単に' tapply'の 'option simplify = FALSE(おそらく同じことをします)を設定してください。 – Frank
ありがとう、フランクですが、同じように比較的読めなくて使いにくいものです。 –
さて、あなたが何をしているのか分かります。 1つの問題は、列名を自動的に生成できないことです。名前付き引数 'c(npass = npass、...)'で何かを返すように関数を変更したいと思うかもしれません。これで 'do.call(rbind、lim_yld)'を行うことができます。あなたがパッケージを開いているなら、このsplit-apply-combineを行う簡単な方法があります。 – Frank