R语言怎么求均值、中位数和众数?

文章导读
Previous Quiz Next R 中的统计分析通过使用许多内置函数来执行。这些函数大多是 R base package 的一部分。这些函数以 R vector 作为输入,并带上参数来给出结果。
📋 目录
  1. 均值
  2. 应用 Trim 选项
  3. 应用 NA 选项
  4. 中位数
  5. 众数
A A

R - 均值、中位数和众数



Previous
Quiz
Next

R 中的统计分析通过使用许多内置函数来执行。这些函数大多是 R base package 的一部分。这些函数以 R vector 作为输入,并带上参数来给出结果。

本章讨论的函数是 mean、median 和 mode。

均值

均值通过将所有值的总和除以数据系列中的值个数来计算。

在 R 中使用 mean() 函数来计算均值。

语法

R 中计算均值的基本语法如下 −

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

以下是所用参数的说明 −

  • x 是输入 vector。

  • trim 用于从已排序 vector 的两端丢弃某些观测值。

  • na.rm 用于从输入 vector 中移除缺失值。

示例

# 创建一个 vector。 
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 参数时,vector 中的值会被排序,然后丢弃所需的观测值数量来计算均值。

当 trim = 0.3 时,将从两端各丢弃 3 个值来计算均值。

在这种情况下,已排序的 vector 是 (−21, −5, 2, 3, 4.2, 7, 8, 12, 18, 54),用于计算均值时从 vector 中移除的值是左侧的 (−21,−5,2) 和右侧的 (12,18,54)。

# 创建一个 vector。
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 值。

# 创建一个 vector。 
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

中位数

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

语法

R 中计算中位数的的基本语法如下 −

median(x, na.rm = FALSE)

以下是所用参数的说明 −

  • x 是输入 vector。

  • na.rm 用于从输入 vector 中移除缺失值。

示例

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

# 计算中位数。
median.result <- median(x)
print(median.result)

执行上述代码时,会产生以下结果 −

[1] 5.6

众数

众数是在一组数据中出现次数最多的值。与 mean 和 median 不同,mode 可以处理数值和字符数据。

R 中没有标准的内置函数来计算众数。因此,我们创建一个用户函数来计算 R 中数据集的众数。此函数以 vector 作为输入,并给出众数值作为输出。

示例

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

# 创建包含数字的 vector。
v <- c(2,1,2,3,1,2,3,4,1,5,5,3,2,3)

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

# 创建包含字符的 vector。
charv <- c("o","it","the","it","it")

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

执行上述代码时,会产生以下结果 −

[1] 2
[1] "it"