如何在R中按组计算模式(有例子)?

205 阅读1分钟

数据集的模式代表最经常出现的数值。

统计软件R没有一个内置的函数来计算数据集的模式,但是你可以使用下面的函数来计算模式。

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

下面的例子说明了如何使用这个函数在R中按组计算模式。

例1:在R中按组计算模式(一种模式)

假设我们在R语言中拥有以下数据框,它显示了各队篮球运动员的得分情况。

#define data frama
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    A      5
2    A      7
3    A      7
4    A      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 A               7
2 B              12

从结果中我们可以看出。

  • A队的得分模式是7
  • B队的得分模式是12

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

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

#define data frama
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    A      5
2    A      7
3    A      7
4    A      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 A               7
2 B              12
3 B              10

从结果中我们可以看出。

  • A队的积分模式是7
  • B队的积分模式是1210

在这个例子中,有两个积分值在B队出现的频率最高,所以这些模式值在输出中为B队单独列出一行。

其他资源

下面的教程解释了如何在R中计算其他描述性统计。

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

The postHow to Calculate Mode by Group in R (With Examples)appeared first onStatology.