R - 均值、中位数和众数
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"