【问题标题】:How can I calculate the median, by factor, for multiple columns?如何按因子计算多列的中位数?
【发布时间】:2026-02-01 01:15:02
【问题描述】:

我必须按其因子计算数据集中每一列的中值。

这是我用来获取除“类型”列之外的每列的中位数的代码。类型列是数据框中的第一列,该列的值是我的因素。

quant0 = c(0.5)
Median = apply(mydata[2:1051], 2, median, probs = quant0, na.rm = TRUE )

我的数据框看起来像这样:

        Type    x1  x2  x3  ...
1:  Fresh   1.54    1.48    1.88    
2:  Dated   1.46    1.99    1.48
3:  Fresh   2.01    1.02    1.03
...

我想要因子 Fresh 和 Dated 的 x1、x2、... 的中值。

【问题讨论】:

  • aggregate(.~Type, mydata, median, na.rm = TRUE)

标签: r


【解决方案1】:

在Base R中你可以使用aggregate:注意median不带prob参数

aggregate(.~Type, mydata, median, na.rm = TRUE)

【讨论】:

    【解决方案2】:

    我们可以将group_by 与来自dplyracross 一起使用。按'Type'分组,循环across'x'开头的列,得到median

    library(dplyr)
    mydata %>%
           group_by(Type) %>%
           summarise(across(starts_with('x'), median, na.rm = TRUE))
    

    quantile

    mydata %>%
        group_by(Type) %>%
        summarise(across(starts_with('x'), quantile, probs = quant0, na.rm = TRUE))
    

    【讨论】:

      最近更新 更多