R中3x3表中的中值的汇总

时间:2015-07-29 07:23:04

标签: r median summary

取一些通用数据

set.seed(123)
A <- sample(1997:2000, 50, replace=TRUE)
B <- sample(1:3, 50, replace=TRUE)
C <- rnorm(50)
df <- data.frame(A,B,C)

我想创建一个汇总表,对于每个A值(年份),然后每个B值(类型),将打印相应的中位数C

我尝试过以下代码

参考this网站

mytable <- table(df$A, df$B, median(df$C))
ftable(mytable)

here

require(plyr)
ddply(df, .(A), summarize,
      type=unique(B),
      median=median(C))

但似乎都不起作用。所需的输出应该类似于: enter image description here

2 个答案:

答案 0 :(得分:0)

使用data.table包的替代解决方案:

library(data.table)
dt <- data.table(df)
dt[, .(median = median(C)), by = c("A", "B")][order(A, B)]

答案 1 :(得分:0)

使用dplyr的简单解决方案是:

df %>%
    group_by(A,B)%>%
    summarise(C = median(C))

阅读上面的代码如:
第一组由A和B组成,然后按每组的中位数对C进行总结。