Таблица сводной статистики в R Markdown

Как я могу сделать красивую таблицу сводных статистических данных в R Markdown с выводом в формате .pdf?

Я пробую это решение as.data.frame(lapply(df, summary)), как показано здесь, но получаю следующую ошибку: Error in dimnames(x) <- dnx : 'dimnames' applied to non-array.

Требуемый результат — это что-то вроде разных статистических данных в качестве имен строк и различных переменных в качестве имен столбцов. Транспонирование тоже хорошо (и даже предпочтительнее, но я считаю, что оно сложнее). (1 переменная со средним значением + стандартное отклонение) Пример:

Переменная Иметь в виду му СД сигма
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
76
2
Перейти к ответу Данный вопрос помечен как решенный

Ответы 2

Вы можете создать вектор, прежде чем пытаться преобразовать его во фрейм данных.

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. Спасибо.

Gaspar 12.04.2024 22:35

(Чтобы ответить на исходный вопрос). Решение: fBasics::basicStats(df) |> kable().

Gaspar 12.04.2024 22:50

Я не знал об этом пакете.

Johan Rosa 12.04.2024 22:53

Другие вопросы по теме