首页 > 解决方案 > 在多列上使用函数

问题描述

我创建了这个函数来计算平均值、中位数和 SD:

f1<- function(x) c(mean= round(mean(x),2), median= round(median(x),2), sd= round(sd(x),2))

我想将它用于多个列(列名:域 1、域 2、域 3、总计)

我想知道如何使用该函数,您会推荐一种比使用函数来表示均值、中位数和标准差的更好方法吗?

标签: rfunctionmeasure

解决方案


您可以使用sapplyf1函数应用于多个列。

f1<- function(x) c(mean= round(mean(x),2), median= round(median(x),2), sd= round(sd(x),2))
cols <- c('mpg', 'cyl')
sapply(mtcars[cols], f1)

#         mpg  cyl
#mean   20.09 6.19
#median 19.20 6.00
#sd      6.03 1.79

使用dplyr

mtcars %>%
  summarise(across(c(mpg, cyl), list(mean = mean, sd = sd, median = median)))

#  mpg_mean   mpg_sd mpg_median cyl_mean   cyl_sd cyl_median
#1 20.09062 6.026948       19.2   6.1875 1.785922          6

推荐阅读