R - 平均值、中位数和众数



R 中的统计分析是使用许多内置函数执行的。其中大多数函数都是 R 基础包的一部分。这些函数将 R 向量与参数一起作为输入并给出结果。

我们在本章中讨论的函数是 mean、median 和 mode。

Mean

它是通过将值的总和除以数据系列中的值数来计算的。

函数 mean() 用于在 R 中计算此值。

语法

在 R 中计算平均值的基本语法是 -


mean(x, trim = 0, na.rm = FALSE, ...)

以下是所用参数的描述 -

  • x 是输入向量。
  • trim 用于从排序向量的两端删除一些观测值。
  • na.rm 用于从输入向量中删除缺失值。


# 创建一个向量。
x <- c(12,7,3,4.2,18,2,54,-21,8,-5)

# 找到平均值。
result.mean <- mean(x)
print(result.mean)

当我们执行上述代码时,它会产生以下结果——

[1] 8.22

应用 Trim 选项

当提供 trim 参数时,向量中的值将进行排序,然后从计算平均值中删除所需的观测值数。

当 trim = 0.3 时,将从计算中丢弃每端的 3 个值以查找平均值。

在这种情况下,排序的向量为 (−21, −5, 2, 3, 4.2, 7, 8, 12, 18, 54),从向量中删除的用于计算平均值的值为从左开始的 (−21,−5,2) 和从右开始的 (12,18,54)。


# 创建一个向量。
x <- c(12,7,3,4.2,18,2,54,-21,8,-5)

# 找到平均值。
result.mean <-  mean(x,trim = 0.3)
print(result.mean)

当我们执行上述代码时,它会产生以下结果——

[1] 5.55

应用 NA 选项

如果存在缺失值,则 mean 函数返回 NA。

要从计算中删除缺失值,请使用 na.rm = TRUE。这意味着删除 NA 值。


# 创建一个向量。
x <- c(12,7,3,4.2,18,2,54,-21,8,-5,NA)

# 找到平均值
result.mean <-  mean(x)
print(result.mean)

# 查找NA值的平均下降值。
result.mean <-  mean(x,na.rm = TRUE)
print(result.mean)

当我们执行上述代码时,它会产生以下结果——

[1] NA
[1] 8.22

median

数据系列中最中间的值称为中位数。在 R 中使用 median() 函数来计算此值。

语法

在 R 中计算中位数的基本语法是 −


median(x, na.rm = FALSE)

以下是所用参数的描述 -

  • x 是输入向量。
  • na.rm 用于从输入向量中删除缺失值。


# 创建向量。
x <- c(12,7,3,4.2,18,2,54,-21,8,-5)

# 找出中位数。
median.result <- median(x)
print(median.result)

当我们执行上述代码时,它会产生以下结果——

[1] 5.6

mode

众数是一组数据中出现次数最多的值。Unike mean 和 median, mode 可以同时包含数字和字符数据。

R 没有标准的内置函数来计算模式。因此,我们创建一个 user 函数来计算 R 中数据集的模式。此函数将向量作为输入,并给出 mode 值作为输出。


# 创建函数。
getmode <- function(v) {
   uniqv <- unique(v)
   uniqv[which.max(tabulate(match(v, uniqv)))]
}

# 用数字创建向量。
v <- c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)

# 使用用户函数计算模式。
result <- getmode(v)
print(result)

# 用字符创建向量。
charv <- c("o","it","the","it","it")

# 使用用户函数计算模式。
result <- getmode(charv)
print(result)

当我们执行上述代码时,它会产生以下结果——

[1] 2
[1] "it"