在dplyr包中,summarise和across是用于数据汇总和处理的两个重要函数。它们可以帮助我们对数据进行聚合计算,并且可以同时对数字列和非数字列进行不同的操作。
首先,summarise函数用于对数据进行聚合计算,返回一个包含汇总结果的数据框。它可以接受多个参数,其中每个参数都是一个聚合函数,用于对指定的列进行计算。常见的聚合函数包括sum、mean、median、min、max等。
举个例子,假设我们有一个包含学生成绩的数据框,其中包含了学生的姓名、科目和成绩。我们可以使用summarise函数计算每个科目的平均成绩:
library(dplyr)
# 假设数据框名为df,包含列name、subject和score
df %>%
group_by(subject) %>%
summarise(avg_score = mean(score))
在上面的例子中,我们使用group_by函数对数据按照科目进行分组,然后使用summarise函数计算每个科目的平均成绩,并将结果保存在avg_score列中。
接下来,across函数可以用于同时对多个列进行相同的操作。它可以接受多个参数,其中每个参数都是一个列选择器,用于指定要操作的列。常见的列选择器包括all_of、starts_with、ends_with、contains等。
举个例子,假设我们有一个包含学生信息的数据框,其中包含了学生的姓名、年龄和性别。我们可以使用across函数将所有的字符列转换为大写:
library(dplyr)
# 假设数据框名为df,包含列name、age和gender
df %>%
mutate(across(where(is.character), toupper))
在上面的例子中,我们使用where函数选择所有的字符列,然后使用across函数将这些列中的值转换为大写。
需要注意的是,summarise和across函数可以结合使用,以实现对不同类型的列进行不同的操作。例如,我们可以对数字列计算平均值,对字符列计算出现次数:
library(dplyr)
# 假设数据框名为df,包含列name、age和gender
df %>%
summarise(across(where(is.numeric), mean),
across(where(is.character), ~length(unique(.))))
在上面的例子中,我们使用where函数选择所有的数字列,并使用mean函数计算它们的平均值;然后使用where函数选择所有的字符列,并使用匿名函数计算它们的唯一值个数。
总结起来,summarise和across函数是dplyr包中用于数据汇总和处理的重要函数。它们可以帮助我们对数据进行聚合计算,并且可以同时对数字列和非数字列进行不同的操作。
腾讯云相关产品和产品介绍链接地址:
领取专属 10元无门槛券
手把手带您无忧上云