Как я могу сделать красивую таблицу сводных статистических данных в R Markdown с выводом в формате .pdf?
Я пробую это решение as.data.frame(lapply(df, summary))
, как показано здесь, но получаю следующую ошибку: Error in dimnames(x) <- dnx : 'dimnames' applied to non-array
.
Требуемый результат — это что-то вроде разных статистических данных в качестве имен строк и различных переменных в качестве имен столбцов. Транспонирование тоже хорошо (и даже предпочтительнее, но я считаю, что оно сложнее). (1 переменная со средним значением + стандартное отклонение) Пример:
Вы можете создать вектор, прежде чем пытаться преобразовать его во фрейм данных.
names(mtcars) |>
lapply(
\(column_name) {
summary(mtcars[[column_name]]) |>
as.vector() |>
as.data.frame() |>
setNames(column_name)
}
) |>
Reduce(
f = \(x, y) cbind(x, y),
x = _,
init = data.frame(
stat = c("Min.", "1st Qu.", "Median", "Mean", "3rd Qu.", "Max.")
)
)
#> stat mpg cyl disp hp drat wt qsec vs
#> 1 Min. 10.40000 4.0000 71.1000 52.0000 2.760000 1.51300 14.50000 0.0000
#> 2 1st Qu. 15.42500 4.0000 120.8250 96.5000 3.080000 2.58125 16.89250 0.0000
#> 3 Median 19.20000 6.0000 196.3000 123.0000 3.695000 3.32500 17.71000 0.0000
#> 4 Mean 20.09062 6.1875 230.7219 146.6875 3.596563 3.21725 17.84875 0.4375
#> 5 3rd Qu. 22.80000 8.0000 326.0000 180.0000 3.920000 3.61000 18.90000 1.0000
#> 6 Max. 33.90000 8.0000 472.0000 335.0000 4.930000 5.42400 22.90000 1.0000
#> am gear carb
#> 1 0.00000 3.0000 1.0000
#> 2 0.00000 3.0000 2.0000
#> 3 0.00000 4.0000 2.0000
#> 4 0.40625 3.6875 2.8125
#> 5 1.00000 4.0000 4.0000
#> 6 1.00000 5.0000 8.0000
Это еще один вариант
mtcars |>
lapply(
\(column) {
summary(column) |>
as.matrix() |>
t() |>
as.data.frame()
}
) |>
dplyr::bind_rows(.id = "variable")
#> variable Min. 1st Qu. Median Mean 3rd Qu. Max.
#> 1 mpg 10.400 15.42500 19.200 20.090625 22.80 33.900
#> 2 cyl 4.000 4.00000 6.000 6.187500 8.00 8.000
#> 3 disp 71.100 120.82500 196.300 230.721875 326.00 472.000
#> 4 hp 52.000 96.50000 123.000 146.687500 180.00 335.000
#> 5 drat 2.760 3.08000 3.695 3.596563 3.92 4.930
#> 6 wt 1.513 2.58125 3.325 3.217250 3.61 5.424
#> 7 qsec 14.500 16.89250 17.710 17.848750 18.90 22.900
#> 8 vs 0.000 0.00000 0.000 0.437500 1.00 1.000
#> 9 am 0.000 0.00000 0.000 0.406250 1.00 1.000
#> 10 gear 3.000 3.00000 4.000 3.687500 4.00 5.000
#> 11 carb 1.000 2.00000 2.000 2.812500 4.00 8.000
Created on 2024-04-12 with reprex v2.0.2
Быстрое и полное резюме можно получить, используя basicStats
из пакета fBasics:
> library(fBasics)
> basicStats(mtcars)|> round(2)
mpg cyl disp hp drat wt qsec vs am gear carb
nobs 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00 32.00
NAs 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00 0.00
Minimum 10.40 4.00 71.10 52.00 2.76 1.51 14.50 0.00 0.00 3.00 1.00
Maximum 33.90 8.00 472.00 335.00 4.93 5.42 22.90 1.00 1.00 5.00 8.00
1. Quartile 15.43 4.00 120.83 96.50 3.08 2.58 16.89 0.00 0.00 3.00 2.00
3. Quartile 22.80 8.00 326.00 180.00 3.92 3.61 18.90 1.00 1.00 4.00 4.00
Mean 20.09 6.19 230.72 146.69 3.60 3.22 17.85 0.44 0.41 3.69 2.81
Median 19.20 6.00 196.30 123.00 3.69 3.33 17.71 0.00 0.00 4.00 2.00
Sum 642.90 198.00 7383.10 4694.00 115.09 102.95 571.16 14.00 13.00 118.00 90.00
SE Mean 1.07 0.32 21.91 12.12 0.09 0.17 0.32 0.09 0.09 0.13 0.29
LCL Mean 17.92 5.54 186.04 121.97 3.40 2.86 17.20 0.26 0.23 3.42 2.23
UCL Mean 22.26 6.83 275.41 171.41 3.79 3.57 18.49 0.62 0.59 3.95 3.39
Variance 36.32 3.19 15360.80 4700.87 0.29 0.96 3.19 0.25 0.25 0.54 2.61
Stdev 6.03 1.79 123.94 68.56 0.53 0.98 1.79 0.50 0.50 0.74 1.62
Skewness 0.61 -0.17 0.38 0.73 0.27 0.42 0.37 0.24 0.36 0.53 1.05
Kurtosis -0.37 -1.76 -1.21 -0.14 -0.71 -0.02 0.34 -2.00 -1.92 -1.07 1.26
Если вам нужна сводка по умолчанию из базы R, вы можете использовать sapply + summary
:
> sapply(mtcars, summary)|> round(2)
mpg cyl disp hp drat wt qsec vs am gear carb
Min. 10.40 4.00 71.10 52.00 2.76 1.51 14.50 0.00 0.00 3.00 1.00
1st Qu. 15.43 4.00 120.83 96.50 3.08 2.58 16.89 0.00 0.00 3.00 2.00
Median 19.20 6.00 196.30 123.00 3.70 3.33 17.71 0.00 0.00 4.00 2.00
Mean 20.09 6.19 230.72 146.69 3.60 3.22 17.85 0.44 0.41 3.69 2.81
3rd Qu. 22.80 8.00 326.00 180.00 3.92 3.61 18.90 1.00 1.00 4.00 4.00
Max. 33.90 8.00 472.00 335.00 4.93 5.42 22.90 1.00 1.00 5.00 8.00
(Чтобы ответить на исходный вопрос). Решение: fBasics::basicStats(df) |> kable()
.
Я не знал об этом пакете.
Это безумие! Я вообще не знал об этом пакете
fBasics
. Спасибо.