“错误:`x必须是公式”,带有qwraps2 summary_table函数

问题描述 投票:0回答:1

我正在尝试创建一个具有与此类似的摘要统计信息的表(但填写了最小/最大/中位数/均值):

                            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),
)

这是我正在处理的代码,摘自here

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必须为公式”

我的最终目标是完成一个类似于以上内容的表格,并将其导出为ex​​cel文件或Word文档。

任何帮助将不胜感激。

r summary summarytools qwraps2
1个回答
0
投票
建立数据集时进行较小的更正。我用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软件包并将标记语言设置为“降价”。没有此设置,默认标记为LaTeX。

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

与问题发布中的摘要相同,但缺少逗号如Ben评论中所述添加。需要.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 |

reprex package(v0.3.0)在2020-03-01创建

© www.soinside.com 2019 - 2024. All rights reserved.