qwraps2 group_by только частично применяется к таблице - PullRequest
0 голосов
/ 25 января 2019

Я опробовал пакет qwraps2, который выглядит довольно многообещающим.

Однако, когда я написал такую ​​таблицу:

set.seed(42)
library(magrittr)
library(qwraps2)
library(dplyr)


# define the markup language we are working in.
# options(qwraps2_markup = "latex") is also supported.
options(qwraps2_markup = "markdown")

data(mtcars)

mtcars2 <-
  dplyr::mutate(mtcars,
                cyl_factor = factor(cyl,
                                    levels = c(6, 4, 8),
                                    labels = paste(c(6, 4, 8), "cylinders")),
                cyl_character = paste(cyl, "cylinders"))

str(mtcars2)
with(mtcars2, table(cyl_factor, cyl_character))
with(mtcars2, all.equal(factor(cyl_character), cyl_factor))
mean_sd(mtcars2$mpg)
args(summary_table)

our_summary1 <-
  list("Miles Per Gallon" =
         list("min" = ~ min(.data$mpg),
              "max" = ~ max(.data$mpg),
              "mean (sd)" = ~ qwraps2::mean_sd(.data$mpg)),
       "Displacement" =
         list("min" = ~ min(.data$disp),
              "median" = ~ median(.data$disp),
              "max" = ~ max(.data$disp),
              "mean (sd)" = ~ qwraps2::mean_sd(.data$disp)),
       "Weight (1000 lbs)" =
         list("min" = ~ min(.data$wt),
              "max" = ~ max(.data$wt),
              "mean (sd)" = ~ qwraps2::mean_sd(.data$wt)),
       "Forward Gears" =
         list("Three" = ~ qwraps2::n_perc0(.data$gear == 3),
              "Four"  = ~ qwraps2::n_perc0(.data$gear == 4),
              "Five"  = ~ qwraps2::n_perc0(.data$gear == 5))
  )
whole <- summary_table(mtcars2 %>% dplyr::group_by(., cyl), our_summary1)
whole

На моем сервере, который не позволяет выводить пример, с group_by происходит странная вещь, которую я не могу понять:

Когда я использую функцию group_by, как указано выше, она делает group_by в заголовках столбцов (таким образом, как и в приведенном выше примере, я получаю число maching cyl = 4,6 и 8 (n = 11,7 и 14) в качестве отдельных столбцов. (group_by из dplyr)

Однако все статистические данные в строках ниже одинаковы в каждом столбце и представляют собой общее количество всех (таким образом, не сгруппированных). Это действительно странно и не выдает ошибку, у кого-нибудь есть предложения о том, как действовать?

Извините, но я не могу привести воспроизводимый пример.

1 Ответ

0 голосов
/ 25 января 2019

Я понял, что я сделал не так.

list("Miles Per Gallon" =
         list("min" = ~ min(.data$mpg),
              "max" = ~ max(.data$mpg),
              "mean (sd)" = ~ qwraps2::mean_sd(.data$mpg))

вместо записи "min" = ~ min(.data$cyl == 4) я написал "min" = ~ min(data$cyl == 4), таким образом, каждый раз ссылаясь на все данные. Это работает, когда я исправляю это: "min" = ~ min(cyl == 4)

...