我有一个csv文件mtcars,其中包含具有不同变量的汽车模型
我知道要找到均值,我只要做均值(mtcars $ mpg)并找到方差var(mtcars $ mpg)。而不是多次编写此代码,我将如何在一行中显示每个变量的所有均值和方差?数据集中的第一列是字符串,因此在计算均值和方差时如何忽略该列?谢谢。
答案 0 :(得分:2)
在tidyverse
中,我们可以整形为'long'格式,然后按'name'分组,将mean
和var
iance作为summarise
d输出到两列中
library(dplyr)
library(tidyr)
library(tibble)
mtcars %>%
rownames_to_column('model') %>%
pivot_longer(cols = -model) %>%
group_by(name) %>%
summarise(Mean = mean(value), Var = var(value))
或者另一个选择是summarise_if
mtcars %>%
rownames_to_column('model') %>%
summarise_if(is.numeric, list(Mean = mean, Var = var)) %>%
pivot_longer(cols = everything())
或者使用colMeans
和matrixStats::colVars
colMeans(mtcars[-1])
matrixStats::colVars(as.matrix(mtcars[-1]))
答案 1 :(得分:1)
早上好,用户。
也尝试使用
Rfast::colVars(x)
我的实验表明,速度至少要快2倍。第二种选择是
Rfast2::colmeansvars(x)