在R中计算数据帧中行和列的中值

在R中计算数据帧中行和列的中值,r,rows,median,R,Rows,Median,我有一个数据框,看起来像: Group1 | Group2 | Score1 | Score2 -------|--------|--------|-------- A | 1 | 10 | 11 A | 2 | 13 | 14 B | 1 | 4 | 7 B | 2 | 9 | 12 A | 1 | 5 |

我有一个数据框,看起来像:

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 
-------|--------|--------|--------
   A   |    1   |   7.5  |   11  
   A   |    2   |   10   |   11.5   
   B   |    1   |   5.5  |   8.5  
   B   |    2   |    9   |   12.5   

我需要的是创建一个新变量,它给我每个子组组合的中值,比如

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) 
基本上,我需要的是得到相同的输出,如果我将中值函数应用于矩阵中的三行,而不是每个子组组合的数据帧,我将得到相同的输出


任何帮助都将不胜感激。

如果我理解正确,这里有一个可能的解决方案:

library(reshape2)
library(dplyr)
df2 <- melt(df, id.vars = c("Group1","Group2"))
df2 %>% group_by(Group1, Group2) %>% summarise(median = median(value)) %>% merge(df, by = c("Group1","Group2"))
library(重塑2)
图书馆(dplyr)
df2%group_by(Group1,Group2)%%>%总结(中位数=中位数(值))%%>%合并(df,by=c(“Group1,Group2”))

对不起,我不明白这个问题,你能再补充一点细节吗?我刚刚修改了它,希望能让它更清楚。我很抱歉用糟糕的方式解释我需要什么!这正是我需要的!我不知道存在像melt这样的函数。非常感谢:-)您可以使用重塑软件包从宽格式转换为长格式(melt:从宽格式转换为长格式,即多个变量转换为一个值列和一个变量列;cast:从长格式转换为宽格式,即一个变量和一个值列转换为与变量列中变量类型相同的列)。我希望我足够清楚!完全清楚!我知道如何在Stata做这些事情,但搬到R我还在学习!