dplyr:在 group_by() 之后在 summarise() 中使用自定义函数

ruby

1个回答

写回答

czx1962

2025-07-07 18:25

+ 关注

Total
Total

使用dplyr中的group_by()和summarise()函数可以方便地对数据进行分组和汇总操作。在group_by()函数中指定分组的变量,然后在summarise()函数中使用各种内置函数对每个分组进行汇总统计。

首先,让我们来看一个简单的示例,假设我们有一份销售数据,包含了销售员的姓名、销售额和销售日期。我们想要按照销售员进行分组,并计算每个销售员的总销售额和平均销售额。

使用dplyr中的group_by()函数可以很容易地实现这个功能。首先,我们需要加载dplyr包,并读入销售数据。

R

library(dplyr)

# 读入销售数据

sales_data <- data.frame(</p> salesman = c("张三", "李四", "王五", "张三", "李四", "王五"),

sales = c(1000, 2000, 3000, 1500, 2500, 3500),

date = c("2021-01-01", "2021-01-01", "2021-01-01", "2021-01-02", "2021-01-02", "2021-01-02")

)

# 按照销售员进行分组,并计算总销售额和平均销售额

sales_summary <- sales_data %>%

group_by(salesman) %>%

summarise(Total_sales = sum(sales), average_sales = mean(sales))

# 输出结果

sales_summary

在上面的代码中,我们首先使用group_by(salesman)函数按照销售员对数据进行分组。然后,在summarise()函数中使用sum(sales)计算每个分组的总销售额,并使用mean(sales)计算每个分组的平均销售额。最后,我们将结果保存在sales_summary变量中,并输出结果。

接下来,让我们进一步扩展这个例子,使用自定义函数进行汇总统计。假设我们想要计算每个销售员的销售额的中位数。

在这种情况下,我们可以使用summarise()函数的自定义函数功能。我们可以在summarise()函数中定义一个自定义函数,并将其应用于每个分组的数据。

R

# 自定义函数:计算中位数

median_sales <- function(x) {</p> median(x)

}

# 按照销售员进行分组,并计算销售额的中位数

sales_summary <- sales_data %>%

group_by(salesman) %>%

summarise(median_sales = median_sales(sales))

# 输出结果

sales_summary

在上面的代码中,我们首先定义了一个自定义函数median_sales(),该函数接受一个向量作为参数,并计算该向量的中位数。然后,在summarise()函数中,我们将median_sales()函数应用于每个分组的销售额数据,并将结果保存在median_sales变量中。

最后,我们将结果打印出来,可以看到每个销售员的销售额的中位数。

自定义函数:计算中位数

在这个例子中,我们使用了自定义函数来计算每个销售员的销售额的中位数。这个自定义函数可以接受一个向量作为参数,并计算该向量的中位数。

R

# 自定义函数:计算中位数

median_sales <- function(x) {</p> median(x)

}

在上面的代码中,我们定义了一个名为median_sales的自定义函数。该函数使用median()函数来计算传入的向量x的中位数,并将结果返回。

按销售员分组并计算销售额的中位数

在这个例子中,我们使用dplyr中的group_by()和summarise()函数来按销售员进行分组,并计算每个销售员的销售额的中位数。

R

# 按照销售员进行分组,并计算销售额的中位数

sales_summary <- sales_data %>%

group_by(salesman) %>%

summarise(median_sales = median_sales(sales))

在上面的代码中,我们使用group_by(salesman)函数按销售员对数据进行分组。然后,在summarise()函数中,我们使用自定义函数median_sales()计算每个销售员的销售额的中位数,并将结果保存在median_sales变量中。

最后,我们将结果打印出来,可以看到每个销售员的销售额的中位数。

在本文中,我们介绍了如何使用dplyr中的group_by()和summarise()函数对数据进行分组和汇总统计。我们首先通过一个简单的示例展示了如何计算每个销售员的总销售额和平均销售额。然后,我们展示了如何使用自定义函数来计算每个销售员的销售额的中位数。通过这些示例,我们可以看到dplyr提供了一种简洁、灵活的方式来对数据进行分组和汇总操作,大大提高了我们的工作效率。

举报有用(4)分享收藏

Copyright © 2025 IZhiDa.com All Rights Reserved.

知答 版权所有 粤ICP备2023042255号