如何根据 R 中的不同组找到 mean/median/mode?

How to find mean/median/mode based on distinctive groups in R?

我对R和编程非常陌生,所以我什至不知道如何清楚地描述我的问题,请原谅我用一个例子来进一步解释我的意思:

假设我有一个包含 2 列的数据框,第一列是 10 个不同的国家,第二列是幸福率 (0-10)。并且 country 列可以有很多重复的,例如:

栏目标题:乡村幸福 第一栏内容:A,C,A,B,B,B,C,A,D,D....
第二列内容:10,9,3,4,4,5,6,9,10,6...

我想实现的是:分别得到国家A B C D的mean/median/mode。到目前为止,使用 describe() 函数我只能获得所有数字的 MMM,而不是国家/地区。

请问有没有函数可以直接实现,还是先创建每个国家的子集?我应该怎么做?

非常感谢。

你可以用 dplyr 做到最好,但首先你必须为模式编写一个函数:

getmode <- function(v) {
  uniqv <- unique(v[!is.na(v)])
  uniqv[which.max(table(match(v, uniqv)))]
}

现在您可以group_by分组变量Country并使用summarise计算统计数据:

library(dplyr)
df %>%
  group_by(Country) %>%
  summarise(Mean = mean(Happiness),
            Median = median(Happiness),
            Mode = getmode(Happiness))

结果:

# A tibble: 4 x 4
  Country  Mean Median  Mode
* <chr>   <dbl>  <dbl> <int>
1 A         2.5    2.5     2
2 B         2      2       2
3 C         3      3       3
4 D         3.5    3.5     5

数据:

set.seed(12)
df <- data.frame(
  Country = sample(LETTERS[1:4], 10, replace = T),
  Happiness = sample(1:5, 10, replace = T)
)