База R на помощь! Основная функция R ftable
специально разработана для этой цели. Я считаю, что "F" для "сгладить". Просто соберите два data.frames вместе в то, что можно назвать полудлинной формой, xtab
- сгруппируйте их в трехмерный массив, и тогда ftable
отобразит:
Конец игры:
ftable( aperm(tgrp, c(3,1,2)), row.vars=c('Species', 'stat') )
#----------------
petal_width sepal_width
Species stat
setosa mean 0.2460000 3.4280000
std_dev 0.1053856 0.3790644
versicolor mean 1.3260000 2.7700000
std_dev 0.1977527 0.3137983
virginica mean 2.0260000 2.9740000
std_dev 0.2746501 0.3224966
Приготовление:
Начните с присвоения одинаковых имен столбцов, чтобы они могли быть "rbound":
library(dplyr)
ms <- iris %>%
group_by(Species) %>%
summarize(petal_width=mean(Petal.Width),
sepal_width=mean(Sepal.Width))
sds <- iris %>%
group_by(Species) %>%
summarize(petal_width=sd(Petal.Width),
sepal_width=sd(Sepal.Width))
grouped <- rbind( cbind(stat="mean", ms), cbind(stat="std_dev", sds) )
tgrp <- xtabs( cbind(petal_width, sepal_width) ~ stat+Species, grouped)