【问题标题】:qwraps2 group_by only partially applies on tableqwraps2 group_by 仅部分适用于表
【发布时间】:2019-01-24 21:19:23
【问题描述】:

我已经试用了看起来很有希望的 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 (因此,在上面的示例中,我将数字 cyl = 4,6 和 8(n = 11,7 和 14)作为单独的列。 (group_by 来自 dplyr)

但是,下面各行的所有统计信息在每列中都是相同的,并且是所有统计信息的总和(因此未分组)。这真的很奇怪,它不会引发错误,有人对如何进行有任何建议吗?

很抱歉,我无法提供可重复的示例。

【问题讨论】:

    标签: r dplyr qwraps2


    【解决方案1】:

    我知道我做错了什么。

    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)

    【讨论】:

    • 从 qwraps2 版本 0.5.0(2020 年 9 月 1 日发布)开始,不再推荐使用 .data 数据代词。 "min" = ~ min(cyl == 4) 现在应该是常态。
    猜你喜欢
    • 1970-01-01
    • 2013-11-04
    • 2019-10-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-10-28
    相关资源
    最近更新 更多