выборочное среднее и выборочное отклонение нескольких переменных - PullRequest
0 голосов
/ 05 апреля 2020

У меня есть CSV-файл, mtcars, который содержит модели автомобилей с разными переменными enter image description here

Я знаю, что для нахождения среднего значения я просто имею в виду (mtcars $ mpg) и найти дисперсию, var (mtcars $ mpg). Вместо того, чтобы писать это несколько раз, как бы я отобразил все средства и дисперсию каждой переменной в одной строке? Первый столбец в наборе данных - это строки, так как бы мне не учитывать этот один столбец при вычислении среднего значения и дисперсии? Спасибо.

Ответы [ 2 ]

2 голосов
/ 05 апреля 2020

В tidyverse мы можем преобразовать в «длинный» формат, затем сгруппировать по «имени», чтобы получить 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 голос
/ 17 апреля 2020

Доброе утро, Пользователь.

Попробуйте также использовать

Rfast::colVars(x) 

Мои эксперименты говорят, что это как минимум в 2 раза быстрее. Второй альтернативой будет

Rfast2::colmeansvars(x)
...