数据集的模式代表最经常出现的数值。
统计软件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队的积分模式是12和10。
在这个例子中,有两个积分值在B队出现的频率最高,所以这些模式值在输出中为B队单独列出一行。
其他资源
下面的教程解释了如何在R中计算其他描述性统计。
如何在R中计算五个数字的汇总
如何在R中创建汇总表
如何在R中使用mean()函数
The postHow to Calculate Mode by Group in R (With Examples)appeared first onStatology.