如何在 r 中按组计算众数(附示例)


数据集的众数代表最常见的值。

R统计软件没有内置函数来计算数据集的众数,但您可以使用以下函数来计算众数:

 find_mode <- function (x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

以下示例展示了如何使用该函数在 R 中按组计算众数。

例1:R中按组计算众数(一种众数)

假设我们在 R 中有以下数据框,显示来自不同球队的篮球运动员的得分:

 #define data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(5, 7, 7, 9, 12, 12, 10, 14))

#view data frame
df

  team points
1 to 5
2 to 7
3 to 7
4 to 9
5 B 12
6 B 12
7 B 10
8 B 14

我们可以使用以下代码来计算按团队分组的积分众数:

 library (dplyr)

#define function to calculate mode
find_mode <- function (x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

#calculate mode of 'points' by 'team'
df %>%
  group_by(team) %>%
  summarize(mode_points = find_mode(points))

# A tibble: 2 x 2
  team mode_points
         
1 to 7
2 B 12

从结果我们可以看出:

  • A 队的积分模式为7
  • B 队的积分模式为12

示例2:R中按组计算模式(多种模式)

假设我们在 R 中有以下数据框:

 #define data frame
df <- data. frame (team=c('A', 'A', 'A', 'A', 'B', 'B', 'B', 'B'),
                 points=c(5, 7, 7, 9, 12, 12, 10, 10))

#view data frame
df

  team points
1 to 5
2 to 7
3 to 7
4 to 9
5 B 12
6 B 12
7 B 10
8 B 10

我们可以使用以下代码来计算按团队分组的积分众数:

 library (dplyr)

#define function to calculate mode
find_mode <- function (x) {
  u <- unique(x)
  tab <- tabulate(match(x, u))
  u[tab == max(tab)]
}

#calculate mode of 'points' by 'team'
df %>%
  group_by(team) %>%
  summarize(mode_points = find_mode(points))

# A tibble: 3 x 2
# Groups: team [2]
  team mode_points
         
1 to 7
2 B 12
3 B 10

从结果我们可以看出:

  • A 队的积分模式为7
  • B队的计分方式为12分10分

在此示例中,团队 B 出现最频繁的两个点值。因此,每个众数值都会在输出中为团队 B 在单独的行上返回。

其他资源

以下教程解释了如何在 R 中计算其他描述性统计量:

如何在R中计算五个数字的总和
如何在 R 中创建汇总表
如何在 R 中使用 Mean() 函数

添加评论

您的电子邮箱地址不会被公开。 必填项已用*标注