在 R 中对数值数据做汇总时,计算平均值往往是第一步。反正我通常也是先做这一步。
当然,“average(平均)”不一定非指算术平均数,但在本文中我默认就是这个意思,因为我要演示如何使用 R 中的 mean() 函数——这是 R 为此目的提供的标准工具。
mean() 在 R 中有什么作用?
mean() 函数会计算数值数据的算术平均数。也就是说,它将向量或列中的所有值相加,再除以值的总个数。由于 mean() 属于 base R,您无需加载额外的包。因此一打开 R 就可以直接使用。
mean() 函数语法
我们已经知道 mean() 的用途了,下面看下它的基本语法,便于您上手使用:
mean(x, na.rm = FALSE, ...) 技术支持
接下来请注意,处理缺失数据以及与不同数据结构打交道会带来一些细微差别,留意这些点就好。
在 R 中计算数值向量的平均值
最基本的用法大概就是计算一个向量的平均值:
daily_temperatures <- c(72, 68, 75, 70, 69)
mean(daily_temperatures)技术支持
这段代码会返回 72、68、75、70 和 69 的平均值,即 70.8。
用 na.rm 处理 R 中的缺失值
真实数据集中常常会有缺失值。若数据中包含缺失项,mean() 按默认行为会返回 NA。如果您没预料到这一点,可能会被它绊住,所以我们才需要花点时间了解 na.rm 参数。
survey_scores <- c(82, 90, NA, 88, 85)
mean(survey_scores)技术支持
运行这段代码会返回 NA。要让 R 忽略缺失值,只需设置 na.rm = TRUE:
mean(survey_scores, na.rm = TRUE)技术支持
现在,mean() 只会用可用的数字来计算平均值。
在 R 中将 mean() 用于数据框
让我们把它的用法扩展到数据框,数据框是 R 中常见的数据结构。若要计算某一列的平均值,只需用 $ 操作符引用该列:
student_scores <- data.frame(
student_name = c("Amir", "Bianca", "Carlos"),
math_score = c(92, 85, 88)
)
mean(student_scores$math_score)技术支持
这会计算数据框中所有学生的平均分。您可以将这种方法应用于任意数值列(前提是它确实是数值列)。
R 中逻辑值的平均
到目前为止我们一直在讨论数值数据,但您可能会惊讶地发现,mean() 也能作用于逻辑向量。这是我之前略过的一个小但重要的细节。
之所以可以对逻辑值使用 mean(),是因为在 R 中,TRUE 被视为 1,FALSE 被视为 0,因此对逻辑向量取平均会返回 TRUE 值所占的比例。如果您需要汇总二元结果,这会很有用。
quiz_passed_flags <- c(TRUE, FALSE, TRUE, TRUE)
mean(quiz_passed_flags)技术支持
这里的结果是 0.75,因为 4 个值中有 3 个为 TRUE。
在 R 中求加权平均
有时您需要加权平均,因为不同的值对结果的贡献不相等。此时可以使用 weighted.mean():
course_grades <- c(88, 92, 75)
assignment_weights <- c(0.3, 0.4, 0.3)
weighted.mean(course_grades, assignment_weights)技术支持
通过使用 weighted.mean(),您可以考虑各个值的重要性或出现频率的差异。mean() 本身并不会做到这一点。
一些需要注意的事项
这些点前面大多已经提到过了,这里把可能的问题或提示集中列一下:
-
非数值数据:如果向量或列不是数值或逻辑类型,mean() 会报错。
-
NA 处理:在有缺失数据时忘记使用 na.rm = TRUE,每次都会让您栽跟头。
-
空向量:mean(numeric(0)) 会返回 NA 并给出警告。
R 中的相似函数
R 还提供了若干相关函数,帮助您从不同角度探索数据。这些也都在 base R 中,因此无需导入库即可使用。
-
median():用于计算中位数
-
sd():用于计算标准差
-
sum():用于求和
如果您想进一步了解不同集中趋势度量的重要性,请查看我们非常完整的教程:均值 vs. 中位数:了解差异。
结论
在大多数基础的数据分析任务中,mean() 是您汇总数值时的第一站。
继续通过我们的课程学习,例如 Introduction to R 和 Exploratory Data Analysis in R。
在 R 中对数值数据做汇总时,计算平均值往往是第一步。反正我通常也是先做这一步。
当然,“average(平均)”不一定非指算术平均数,但在本文中我默认就是这个意思,因为我要演示如何使用 R 中的
mean()函数——这是 R 为此目的提供的标准工具。mean() 在 R 中有什么作用?
mean()函数会计算数值数据的算术平均数。也就是说,它将向量或列中的所有值相加,再除以值的总个数。由于mean()属于 base R,您无需加载额外的包。因此一打开 R 就可以直接使用。mean() 函数语法
我们已经知道
mean()的用途了,下面看下它的基本语法,便于您上手使用:x:数值向量或对象。na.rm:逻辑值。若为TRUE,mean()将忽略NA值。接下来请注意,处理缺失数据以及与不同数据结构打交道会带来一些细微差别,留意这些点就好。
在 R 中计算数值向量的平均值
最基本的用法大概就是计算一个向量的平均值:
这段代码会返回 72、68、75、70 和 69 的平均值,即 70.8。
用 na.rm 处理 R 中的缺失值
真实数据集中常常会有缺失值。若数据中包含缺失项,
mean()按默认行为会返回NA。如果您没预料到这一点,可能会被它绊住,所以我们才需要花点时间了解na.rm参数。运行这段代码会返回
NA。要让 R 忽略缺失值,只需设置na.rm = TRUE:现在,
mean()只会用可用的数字来计算平均值。在 R 中将 mean() 用于数据框
让我们把它的用法扩展到数据框,数据框是 R 中常见的数据结构。若要计算某一列的平均值,只需用
$操作符引用该列:这会计算数据框中所有学生的平均分。您可以将这种方法应用于任意数值列(前提是它确实是数值列)。
R 中逻辑值的平均
到目前为止我们一直在讨论数值数据,但您可能会惊讶地发现,
mean()也能作用于逻辑向量。这是我之前略过的一个小但重要的细节。之所以可以对逻辑值使用
mean(),是因为在 R 中,TRUE被视为1,FALSE被视为0,因此对逻辑向量取平均会返回TRUE值所占的比例。如果您需要汇总二元结果,这会很有用。这里的结果是 0.75,因为 4 个值中有 3 个为
TRUE。在 R 中求加权平均
有时您需要加权平均,因为不同的值对结果的贡献不相等。此时可以使用
weighted.mean():通过使用
weighted.mean(),您可以考虑各个值的重要性或出现频率的差异。mean()本身并不会做到这一点。一些需要注意的事项
这些点前面大多已经提到过了,这里把可能的问题或提示集中列一下:
非数值数据:如果向量或列不是数值或逻辑类型,
mean()会报错。NA 处理:在有缺失数据时忘记使用
na.rm = TRUE,每次都会让您栽跟头。空向量:
mean(numeric(0))会返回NA并给出警告。R 中的相似函数
R 还提供了若干相关函数,帮助您从不同角度探索数据。这些也都在 base R 中,因此无需导入库即可使用。
median():用于计算中位数sd():用于计算标准差sum():用于求和如果您想进一步了解不同集中趋势度量的重要性,请查看我们非常完整的教程:均值 vs. 中位数:了解差异。
结论
在大多数基础的数据分析任务中,
mean()是您汇总数值时的第一站。继续通过我们的课程学习,例如 Introduction to R 和 Exploratory Data Analysis in R。