【发布时间】:2014-07-31 19:02:30
【问题描述】:
我想计算数据框中的组平均值,并在包含这些组平均值的原始数据框中创建一个新列。 (我正在做一项可重复性研究,我希望在新列中插入、单元和通道内的测量值的平均值,以便我可以将其减去并计算残差。)
我的数据:
> head(mytestdata,15)
Insertion Measurement Unit Channel Value
1 1 1 A5 10 9.41
2 1 1 A5 11 9.51
3 1 1 A5 12 10.59
4 1 1 A5 13 9.45
5 1 2 A5 10 9.42
6 1 2 A5 11 9.03
7 1 2 A5 12 10.62
8 1 2 A5 13 9.39
9 1 3 A5 10 9.38
10 1 3 A5 11 9.87
11 1 3 A5 12 11.34
12 1 3 A5 13 9.59
13 2 1 A5 10 12.10
14 2 1 A5 11 11.28
15 2 1 A5 12 12.95
具体来说,我想计算每个插入、单元和通道的平均值,并将其作为平均值添加到数据框中。然后从 Value 中减去 meanValue 得到 Residual。
应该是这样的:
Insertion Measurement Unit Channel Value meanValue
1 1 1 40 10 11.79 11.56
2 1 1 40 11 11.01 11.38
3 1 1 40 12 10.86 11.19
4 1 1 40 13 10.29 10.91
5 1 2 40 10 11.47 11.56
6 1 2 40 11 11.84 11.38
7 1 2 40 12 11.39 11.19
8 1 2 40 13 11.25 10.91
9 1 3 40 10 11.42 11.56
10 1 3 40 11 11.28 11.38
11 1 3 40 12 11.31 11.19
12 1 3 40 13 11.18 10.91
13 2 1 40 10 10.97 11.55
14 2 1 40 11 11.78 11.87
15 2 1 40 12 11.48 11.25
我知道如何使用 by、aggregate 等方法获取组,这可以让我获得第二个列表或表格,其中包含其中的值。我也相信我可以使用一些复杂的循环程序得到我想要的东西,但我希望在一个优雅的单行或两行解决方案中将它们塞回同一个数据帧中,我认为必须有一个这样做的方法,但经过几天的搜索,我没有找到它。我不想要繁琐的解决方案,因为我希望它在我扩展到更多数据时也能正常工作。
【问题讨论】:
-
就行数和列数而言,您的实际数据大概有多大?