thetas
約 270 万の観測値を含むというデータ フレームがあります。
> str(thetas)
'data.frame': 2700000 obs. of 8 variables:
$ rho_cnd : num 0 0 0 0 0 0 0 0 0 0 ...
$ pct_cnd : num 0 0 0 0 0 0 0 0 0 0 ...
$ sx : num 1 2 3 4 5 6 7 8 9 10 ...
$ model : Factor w/ 7 levels "dN.mN","dN.mL",..: 1 1 1 1 1 1 1 1 1 1 ...
$ estTheta : num -1.58 -1.716 0.504 -2.296 0.98 ...
$ trueTheta : num 0.0962 -3.3913 3.6006 -0.1971 2.1906 ...
$ estError : num -1.68 1.68 -3.1 -2.1 -1.21 ...
$ trueAberSx: num 0 0 0 0 0 0 0 0 0 0 ...
ddply
、または同様の関数を使用して、推定誤差(estError
データフレームの列)を合計したいと思いますが、合計はシミュレーションの各条件内にあります。問題は、このデータ フレームの他の列の値を組み合わせて、これらすべての条件を一意に識別する簡単な方法がないことです。具体的には、列model
には 7 つの可能な値が含まれています。rho_cnd
これらの可能な値のうちの 3 つは、とのそれぞれで 1 つの可能な値とだけ一致しますがpct_cnd
、 の他の 4 つの可能な値は、model
と の 6 つの可能な値のペアと一致しrho_cnd
ますpct_cnd
。
私が知っている明らかな解決策は、戻って、ここで特定する必要があるすべての条件を一意に識別する変数を作成することです。これにより、次のコードが機能します。
> sums <- ddply(thetas,.(condition1,condition2,etc.),sum(estError))
しかし、私はこのデータ フレームがどのように構築されているかを再現したくありません。現在、2 つの別々の呼び出しで作成された 2 つのデータ フレームexpand.grid
があり、それをrbind
編集して並べ替えて、すべての有効な条件をリストするデータ フレームを作成していますが、これらの数行のコードを保持していても、それらを参照する方法がわかりませんddply
. 私はむしろこのソリューションを使用したくありませんが、必要に応じて使用します。
> conditions
models rhos pcts
1 dN.mN 0.0 0.00
2 dN.mL 0.0 0.00
3 dN.mH 0.0 0.00
4 dL.mN 0.1 0.01
12 dL.mN 0.1 0.02
20 dL.mN 0.1 0.10
8 dL.mN 0.2 0.01
16 dL.mN 0.2 0.02
24 dL.mN 0.2 0.10
5 dL.mL 0.1 0.01
13 dL.mL 0.1 0.02
21 dL.mL 0.1 0.10
9 dL.mL 0.2 0.01
17 dL.mL 0.2 0.02
25 dL.mL 0.2 0.10
6 dH.mN 0.1 0.01
14 dH.mN 0.1 0.02
22 dH.mN 0.1 0.10
10 dH.mN 0.2 0.01
18 dH.mN 0.2 0.02
26 dH.mN 0.2 0.10
7 dH.mH 0.1 0.01
15 dH.mH 0.1 0.02
23 dH.mH 0.1 0.10
11 dH.mH 0.2 0.01
19 dH.mH 0.2 0.02
27 dH.mH 0.2 0.10
より良いコードおよび/またはより効率的なアドバイスはありますか? ありがとう!