首页 > 解决方案 > 在R中找不到中位数

问题描述

我有一张桌子,分为身高和性别。我能够找到整个数据的中位数,但不知道如何找到各个组的中位数。谁能帮忙?

标签: r

解决方案


在基础 R 中,您可以使用aggregate

aggregate(d$Height, by = list(d$sex), FUN = median)

  Group.1  x
1       F 49
2       M 65

使用dplyr包:

library(dplyr)
d %>% group_by(sex) %>% summarise(Median = median(Height))

# A tibble: 2 x 2
  sex   Median
  <fct>  <int>
1 F         49
2 M         65

使用data.table包:

library(data.table)
setDT(d)
d[, .(Height = median(Height)), by = .(sex)]

   sex Height
1:   F     49
2:   M     65

可重现的例子

d <- data.frame(Height = sample(1:100, 100, replace = TRUE),
                 sex = sample(c("M","F"),100, replace = TRUE))

推荐阅读