R - 均值、中位数和众数
你好,有抱负的R语言程序员们!今天,我们将使用R语言深入探索描述性统计学的世界。作为你友好的人工智能助手,我将引导你了解均值、中位数和众数的概念。如果你之前从未编写过一行代码,也不用担心——我们将从最基础的内容开始,一起逐步学习。
均值
让我们从均值开始,这可能是最常见的集中趋势度量。简单来说,它就是我们通常所说的“平均数”。
基础均值计算
在R中计算均值,我们使用mean()
函数。以下是一个简单示例:
numbers <- c(10, 20, 30, 40, 50)
result <- mean(numbers)
print(result)
这将输出:30
让我们分解一下:
- 我们使用
c()
函数创建了一个名为numbers
的向量。 - 我们使用
mean()
函数计算这些数字的平均值。 - 我们将结果存储在一个名为
result
的变量中。 - 最后,我们打印出结果。
带有NA值的均值
现在,如果我们有缺失数据,R中用NA
表示,会发生什么?让我们看看:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_with_na <- mean(numbers_with_na)
print(result_with_na)
这将输出:NA
哦哦!R返回NA
,因为它不知道如何处理缺失值。但别担心,我们有解决方案!
应用NA选项
我们可以使用na.rm
选项让R忽略NA值:
numbers_with_na <- c(10, 20, NA, 40, 50)
result_na_removed <- mean(numbers_with_na, na.rm = TRUE)
print(result_na_removed)
这将输出:30
好多了!通过设置na.rm = TRUE
,我们在计算均值之前告诉R移除NA值。
应用Trim选项
有时,我们希望在计算均值时排除极端值。这时,trim
选项就派上用场了。它允许我们在计算均值之前从数据两端修剪一定百分比的值。
numbers <- c(1, 2, 3, 4, 5, 100) # 注意这里的异常值100
result_trimmed <- mean(numbers, trim = 0.1)
print(result_trimmed)
这将输出一个接近3.5
的值
通过设置trim = 0.1
,我们在计算均值之前从两端移除了10%的数据。这有助于减少异常值的影响。
中位数
中位数是将数据集按大小顺序排列后的中间值。它受异常值的影响小于均值。
numbers <- c(1, 3, 5, 7, 9, 11, 13)
result_median <- median(numbers)
print(result_median)
这将输出:7
median()
函数的工作方式与mean()
类似。它也有一个na.rm
选项来处理NA值:
numbers_with_na <- c(1, 3, NA, 7, 9, 11, 13)
result_median_na <- median(numbers_with_na, na.rm = TRUE)
print(result_median_na)
这将输出:8
众数
有趣的是,R没有内置的众数(最频繁出现的值)函数。但别担心!我们可以创建自己的函数:
get_mode <- function(v) {
uniqv <- unique(v)
uniqv[which.max(tabulate(match(v, uniqv)))]
}
numbers <- c(1, 2, 2, 3, 3, 3, 4, 4, 5)
result_mode <- get_mode(numbers)
print(result_mode)
这将输出:3
让我们分解一下这个自定义函数:
-
unique(v)
获取向量中的唯一值。 -
match(v, uniqv)
找出匹配的位置。 -
tabulate()
计算出现次数。 -
which.max()
找出最大计数的位置。 - 我们返回该位置的值。
函数总结
下面是一个我们学过的函数的便捷表格:
度量 | 函数 | 选项 |
---|---|---|
均值 | mean() | na.rm, trim |
中位数 | median() | na.rm |
众数 | 自定义函数 | N/A |
记住,熟能生巧!尝试将这些函数应用于不同的数据集,并探索改变选项如何影响结果。
在我们结束之前,我想起了一个我早期学习R时的故事。我曾经花了好几个小时尝试计算一个数据集的均值,最后才意识到我忘记了移除NA值。不要像我一样——总是检查你的数据,并在需要时使用na.rm = TRUE
!
快乐编码,愿你在R语言的统计冒险中充满洞见和惊喜时刻!
Credits: Image by storyset