【发布时间】:2020-03-04 16:36:00
【问题描述】:
我有一个看起来像这样的数据框:
Group1 | Group2 | Score1 | Score2
-------|--------|--------|--------
A | 1 | 10 | 11
A | 2 | 13 | 14
B | 1 | 4 | 7
B | 2 | 9 | 12
A | 1 | 5 | 11
B | 2 | 9 | 13
A | 2 | 7 | 9
B | 1 | 7 | 10
我需要创建一个新变量,它为我提供每个子组组合的中值,类似于
Group1 | Group2 | Score1 | Score2 | Median
-------|--------|--------|--------|-------
A | 1 | 10 | 11 | 10.5
A | 2 | 13 | 14 | 11.5
B | 1 | 4 | 7 | 7.0
B | 2 | 9 | 12 | 10.5
A | 1 | 5 | 11 | 10.5
B | 2 | 9 | 13 | 10.5
A | 2 | 7 | 9 | 11.5
B | 1 | 7 | 10 | 7.0
(我手动计算的中位数可能是错误的,但我认为这一点已经提出)。
我尝试使用如下聚合函数:
MedianAggregate <- aggregate(df[,45:47],
by = list(df$provider, df$field),
FUN = median)
我得到的不是我想要的,而是看起来像这样的东西:
Group1 | Group2 | Score1 | Score2
-------|--------|--------|--------
A | 1 | 7.5 | 11
A | 2 | 10 | 11.5
B | 1 | 5.5 | 8.5
B | 2 | 9 | 12.5
基本上,如果我将中值函数应用于矩阵中的三行而不是数据帧,对于子组的每个组合,我基本上需要得到相同的输出。
任何帮助将不胜感激。
【问题讨论】:
-
对不起,我没看懂这个问题,你能补充一点细节吗?
-
我刚刚修改了它,希望让它更清晰。我很抱歉我用糟糕的方式解释我需要什么!