【问题标题】:Computing the median over both rows and columns in a dataframe in R计算R中数据帧中行和列的中位数
【发布时间】: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   

基本上,如果我将中值函数应用于矩阵中的三行而不是数据帧,对于子组的每个组合,我基本上需要得到相同的输出。

任何帮助将不胜感激。

【问题讨论】:

  • 对不起,我没看懂这个问题,你能补充一点细节吗?
  • 我刚刚修改了它,希望让它更清晰。我很抱歉我用糟糕的方式解释我需要什么!

标签: r rows median


【解决方案1】:

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

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"))

【讨论】:

  • 这正是我所需要的!我不知道有像这样的功能melt存在。非常感谢你:-))
  • 您可以使用 reshape 包从宽格式移动到长格式(融化:您从宽格式到长格式,即多个变量到一个值列和一个变量列;演员表:您从长到宽,即一个变量和一个值列到与变量列中的变量类型一样多的列)。我希望我已经足够清楚了!
  • 完全清楚!我知道如何在 Stata 中做这些事情,但转向 R 我仍在学习!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2017-05-28
  • 1970-01-01
  • 2017-12-24
  • 1970-01-01
  • 1970-01-01
  • 2020-04-12
  • 1970-01-01
相关资源
最近更新 更多