我有一个名为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
,pct_cnd
而 的其他四个可能值与和model
中的 6 个可能的值对匹配。rho_cnd
pct_cnd
我知道,显而易见的解决方案是返回并创建一个变量来唯一标识我需要在此处标识的所有条件,以便以下代码可以工作:
> sums <- ddply(thetas,.(condition1,condition2,etc.),sum(estError))
但我只是不想回去重新创建这个数据框是如何构建的。现在我有两个数据框,通过两个单独的调用创建,然后对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
关于更好的代码和/或更高效率的任何建议?谢谢!