R 中给定变量的均值、中值和标准差列表
List of mean, median and sd for a given variable in R
是否可以在apply multiple argument中赋予参数FUN?我试图获取任何数据框中给定变量的均值、中值和 sd 的列表。
示例:apply(X = mtcars, MARGIN = mtcars[i], FUN = c(mean, median, sd)
,其中 i 是感兴趣的变量(或列)。我不确定这是否是要使用的方法,如果不是,请指导我使用更合适的方法。谢谢!
我想要这样的东西:
data(mtcars)
$mpg
mean median st
20.09 19.2 6.03
最简单的方法是 summary
:
summary(mtcars$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
或者,您可以使用 sapply
并为其提供函数列表:
sapply(list(mean = mean, median = median, sd = sd), function(x, y) x(y), mtcars$mpg)
mean median sd
20.090625 19.200000 6.026948
这里的x
是指list
中的函数,y
是mtcars
列中的函数。最后一个参数只是您希望函数应用到的实际列。
你可以试试
mtcars_summary <- apply(mtcars, 2, function(x){
c(mean = mean(x), sd = sd(x), med = median(x))
})
mpg cyl disp hp drat wt qsec vs am gear carb
mean 20.090625 6.187500 230.7219 146.68750 3.5965625 3.2172500 17.848750 0.4375000 0.4062500 3.6875000 2.8125
sd 6.026948 1.785922 123.9387 68.56287 0.5346787 0.9784574 1.786943 0.5040161 0.4989909 0.7378041 1.6152
med 19.200000 6.000000 196.3000 123.00000 3.6950000 3.3250000 17.710000 0.0000000 0.0000000 4.0000000 2.0000
包 {dplyr}
提供了一种非常好的方法 across()
:
library(dplyr)
mtcars %>%
summarise(across(mpg, list(mean = mean, median = median, sd = sd)))
#> mpg_mean mpg_median mpg_sd
#> 1 20.09062 19.2 6.026948
是否可以在apply multiple argument中赋予参数FUN?我试图获取任何数据框中给定变量的均值、中值和 sd 的列表。
示例:apply(X = mtcars, MARGIN = mtcars[i], FUN = c(mean, median, sd)
,其中 i 是感兴趣的变量(或列)。我不确定这是否是要使用的方法,如果不是,请指导我使用更合适的方法。谢谢!
我想要这样的东西:
data(mtcars)
$mpg
mean median st
20.09 19.2 6.03
最简单的方法是 summary
:
summary(mtcars$mpg)
Min. 1st Qu. Median Mean 3rd Qu. Max.
10.40 15.43 19.20 20.09 22.80 33.90
或者,您可以使用 sapply
并为其提供函数列表:
sapply(list(mean = mean, median = median, sd = sd), function(x, y) x(y), mtcars$mpg)
mean median sd
20.090625 19.200000 6.026948
这里的x
是指list
中的函数,y
是mtcars
列中的函数。最后一个参数只是您希望函数应用到的实际列。
你可以试试
mtcars_summary <- apply(mtcars, 2, function(x){
c(mean = mean(x), sd = sd(x), med = median(x))
})
mpg cyl disp hp drat wt qsec vs am gear carb
mean 20.090625 6.187500 230.7219 146.68750 3.5965625 3.2172500 17.848750 0.4375000 0.4062500 3.6875000 2.8125
sd 6.026948 1.785922 123.9387 68.56287 0.5346787 0.9784574 1.786943 0.5040161 0.4989909 0.7378041 1.6152
med 19.200000 6.000000 196.3000 123.00000 3.6950000 3.3250000 17.710000 0.0000000 0.0000000 4.0000000 2.0000
包 {dplyr}
提供了一种非常好的方法 across()
:
library(dplyr)
mtcars %>%
summarise(across(mpg, list(mean = mean, median = median, sd = sd)))
#> mpg_mean mpg_median mpg_sd
#> 1 20.09062 19.2 6.026948