我有一个叫做数据帧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
有什么建议给更好的代码和/或更高的效率? 谢谢!