«Ошибка:` x` должно быть формулой »с функцией qwraps2 summary_table - PullRequest
0 голосов
/ 21 января 2020

Я пытаюсь создать таблицу со сводной статистикой, которая выглядит примерно так (но с заполненными минимальными / максимальными / средними / средними значениями):

                            Type
Mass (g)        tct    tcx    tht    thx    tct
    Min
    Max
    Median
    Mean (SD)
Length (mm)
    Min
    Max
    Median
    Mean (SD)
Width (mm)
    Min
    Max
    Median
    Mean (SD)

Или даже так: (с столбец ширины)

        Mass (g)                         Length (mm)      
Type    Min   Max   Median   Mean (SD)   Min   Max   Median   Mean (SD)
tct
tcx
tht
thx
tct

Вот пример моих данных:

dat <- data.frame(
  "id" = c(01,02,03,04,05,06,07,08,09,10),
  "type" = c("tct", "tcx", "tht", "thx", "tct"),
  "mass.g" = c(0.03,0.01,0.04,0.06,0.07,0.03,0.03,0.01,0.04,0.02),
  "size.length" = c(8,6,5,6.5,5,5.5,6,7,4,3),
  "size.width" = c(2,4,3,4,5,6,3,4,2,1),
)

Это код, над которым я работаю, взят из здесь .

library(qwraps2)

summary <-
  list("Mass (g)" =
         list(
              "Min" = ~ min(.data$mass.g),
              "Max" = ~ max(.data$mass.g),
              "Median" = ~ median(.data$mass.g)
              "Mean (SD)" = ~ qwraps2::mean_sd(.data$mass.g)),
       "Length (mm)" =
         list(
              "Min" = ~ min(.data$size.length),
              "Max" = ~ median(.data$size.length),
              "Median" = ~ max(.data$size.length),
              "Mean (SD)" = ~ qwraps2::mean_sd(.data$size.length)),
       "Width (mm)" =
         list(
              "Min" = ~ min(.data$size.width),
              "Max" = ~ median(.data$size.width),
              "Median" = ~ max(.data$size.width),
              "Mean (SD)" = ~ qwraps2::mean_sd(.data$size.width)
              ))
summary
by_type <- summary_table(dplyr::group_by(dat, type), summary)
by_type

Но я продолжаю получать сообщение об ошибке: «Ошибка: x должна быть формулой»

Моя конечная цель - заполнить таблицу, аналогичную приведенной выше, и экспортируйте его как файл Excel или слово do c.

Любая помощь будет оценена.

1 Ответ

1 голос
/ 02 марта 2020

Незначительная коррекция при построении набора данных. Я использовал dput (), чтобы получить структуру объекта. Это немного более надежно, чем использование data.frame, поскольку режим каждого столбца определен явно.

dat <-
 structure(list(id = c(1, 2, 3, 4, 5, 6, 7, 8, 9, 10), type = structure(c(1L,
 2L, 3L, 4L, 1L, 1L, 2L, 3L, 4L, 1L), class = "factor", .Label = c("tct",
 "tcx", "tht", "thx")), mass.g = c(0.03, 0.01, 0.04, 0.06, 0.07,
 0.03, 0.03, 0.01, 0.04, 0.02), size.length = c(8, 6, 5, 6.5,
 5, 5.5, 6, 7, 4, 3), size.width = c(2, 4, 3, 4, 5, 6, 3, 4, 2,
 1)), class = "data.frame", row.names = c(NA, -10L))

загрузка пакета qwraps и установка языка разметки в значение «markdown». Без этой настройки по умолчанию используется разметка LaTeX.

library(qwraps2)
options(qwraps2_markup = "markdown")

Та же сводка, что и при публикации вопроса, но с добавлением пропущенной запятой, как отмечено в комментарии Бена. местоимение .data необходимо, чтобы область видимости в пределах summary_table была правильной.

summary <-
  list("Mass (g)" =
         list(
              "Min" = ~ min(.data$mass.g),
              "Max" = ~ max(.data$mass.g),
              "Median" = ~ median(.data$mass.g),
              "Mean (SD)" = ~ qwraps2::mean_sd(.data$mass.g)),
       "Length (mm)" =
         list(
              "Min" = ~ min(.data$size.length),
              "Max" = ~ median(.data$size.length),
              "Median" = ~ max(.data$size.length),
              "Mean (SD)" = ~ qwraps2::mean_sd(.data$size.length)),
       "Width (mm)" =
         list(
              "Min" = ~ min(.data$size.width),
              "Max" = ~ median(.data$size.width),
              "Median" = ~ max(.data$size.width),
              "Mean (SD)" = ~ qwraps2::mean_sd(.data$size.width)
              ))

Сводная таблица выглядит так, как ожидается:

by_type <- summary_table(dplyr::group_by(dat, type), summary)
by_type
#> 
#> 
#> |                       |type: tct (N = 4)  |type: tcx (N = 2)  |type: tht (N = 2)  |type: thx (N = 2)  |
#> |:----------------------|:------------------|:------------------|:------------------|:------------------|
#> |**Mass (g)**           |&nbsp;&nbsp;       |&nbsp;&nbsp;       |&nbsp;&nbsp;       |&nbsp;&nbsp;       |
#> |&nbsp;&nbsp; Min       |0.02               |0.01               |0.01               |0.04               |
#> |&nbsp;&nbsp; Max       |0.07               |0.03               |0.04               |0.06               |
#> |&nbsp;&nbsp; Median    |0.030              |0.020              |0.025              |0.050              |
#> |&nbsp;&nbsp; Mean (SD) |0.04 &plusmn; 0.02 |0.02 &plusmn; 0.01 |0.03 &plusmn; 0.02 |0.05 &plusmn; 0.01 |
#> |**Length (mm)**        |&nbsp;&nbsp;       |&nbsp;&nbsp;       |&nbsp;&nbsp;       |&nbsp;&nbsp;       |
#> |&nbsp;&nbsp; Min       |3                  |6                  |5                  |4                  |
#> |&nbsp;&nbsp; Max       |5.25               |6.00               |6.00               |5.25               |
#> |&nbsp;&nbsp; Median    |8.0                |6.0                |7.0                |6.5                |
#> |&nbsp;&nbsp; Mean (SD) |5.38 &plusmn; 2.06 |6.00 &plusmn; 0.00 |6.00 &plusmn; 1.41 |5.25 &plusmn; 1.77 |
#> |**Width (mm)**         |&nbsp;&nbsp;       |&nbsp;&nbsp;       |&nbsp;&nbsp;       |&nbsp;&nbsp;       |
#> |&nbsp;&nbsp; Min       |1                  |3                  |3                  |2                  |
#> |&nbsp;&nbsp; Max       |3.5                |3.5                |3.5                |3.0                |
#> |&nbsp;&nbsp; Median    |6                  |4                  |4                  |4                  |
#> |&nbsp;&nbsp; Mean (SD) |3.50 &plusmn; 2.38 |3.50 &plusmn; 0.71 |3.50 &plusmn; 0.71 |3.00 &plusmn; 1.41 |

Создано в 2020 году -03-01 в пакете представьте (v0.3.0)

...