summary_table 在 qwraps2 中 group_by 在 R 中
summary_table in qwraps2 with group_by in R
我正在试用 qwraps2 包及其一些功能。我尤其对用于输出的 summary_table 工具感兴趣。
我正在使用 iris 数据集进行练习,但在 summary_table:
中使用 group_by 时,我发现有些奇怪
library(datasets)
data("iris")
options(qwraps2_markup = "markdown")
our_summary1 <-
list("Sepal Length" =
list("min" = ~ min(iris$Sepal.Length),
"max" = ~ max(iris$Sepal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Sepal.Length)),
"Sepal Width" =
list("min" = ~ min(iris$Sepal.Width),
"median" = ~ median(iris$Sepal.Width),
"max" = ~ max(iris$Sepal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Sepal.Width)),
"Petal Length" =
list("min" = ~ min(iris$Petal.Length),
"max" = ~ max(iris$Petal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Sepal.Length)),
"Petal Width" =
list("min" = ~ min(iris$Petal.Width),
"max" = ~ max(iris$Petal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Petal.Width)),
"Species" =
list("Setosa" = ~ qwraps2::n_perc0(iris$Species == "setosa"),
"Versicolor" = ~ qwraps2::n_perc0(iris$Species == "versicolor"),
"Virginica" = ~ qwraps2::n_perc0(iris$Species == "virginica"))
)
bytype <- qwraps2::summary_table(dplyr::group_by(iris,Species),our_summary1)
bytype
我得到的输出是:
output from the above code
这没有意义,它说不同花种的不同变量的统计数据是相同的,它们不是。我通过这样做交叉检查了这个:
aggregate(iris[1:4], list(iris$Species), mean)
这表明,例如,不同变量的平均值因物种而异。
为什么 dplyr::group_by
没有做它应该做的事?
我尽我所能发布输出,抱歉,谢谢您的理解。
尝试在声明变量时使用 .data$ 而不是 iris$。我遇到了同样的问题,这解决了它。
group_by
调用似乎没有做任何事情的原因是因为
摘要定义中未使用数据代词 .data
。作为
写的,摘要 table 是基于整个 iris
数据集构建的,
无论任何分组或子集。需要 .data
代词,所以
summary_table
背后的 tidyverse
工具使用正确的
范围。
library(datasets)
library(qwraps2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
data("iris")
options(qwraps2_markup = "markdown")
our_summary1 <-
list("Sepal Length" =
list("min" = ~ min(.data$Sepal.Length),
"max" = ~ max(.data$Sepal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Sepal.Length)),
"Sepal Width" =
list("min" = ~ min(.data$Sepal.Width),
"median" = ~ median(.data$Sepal.Width),
"max" = ~ max(.data$Sepal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Sepal.Width)),
"Petal Length" =
list("min" = ~ min(.data$Petal.Length),
"max" = ~ max(.data$Petal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Sepal.Length)),
"Petal Width" =
list("min" = ~ min(.data$Petal.Width),
"max" = ~ max(.data$Petal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Petal.Width)),
"Species" =
list("Setosa" = ~ qwraps2::n_perc0(.data$Species == "setosa"),
"Versicolor" = ~ qwraps2::n_perc0(.data$Species == "versicolor"),
"Virginica" = ~ qwraps2::n_perc0(.data$Species == "virginica"))
)
bytype <- qwraps2::summary_table(dplyr::group_by(iris,Species),our_summary1)
bytype
#>
#>
#> | |Species: setosa (N = 50) |Species: versicolor (N = 50) |Species: virginica (N = 50) |
#> |:-----------------------|:------------------------|:----------------------------|:---------------------------|
#> |**Sepal Length** | | | |
#> | min |4.3 |4.9 |4.9 |
#> | max |5.8 |7.0 |7.9 |
#> | mean (sd) |5.01 ± 0.35 |5.94 ± 0.52 |6.59 ± 0.64 |
#> |**Sepal Width** | | | |
#> | min |2.3 |2.0 |2.2 |
#> | median |3.4 |2.8 |3.0 |
#> | max |4.4 |3.4 |3.8 |
#> | mean (sd) |3.43 ± 0.38 |2.77 ± 0.31 |2.97 ± 0.32 |
#> |**Petal Length** | | | |
#> | min |1.0 |3.0 |4.5 |
#> | max |1.9 |5.1 |6.9 |
#> | mean (sd) |5.01 ± 0.35 |5.94 ± 0.52 |6.59 ± 0.64 |
#> |**Petal Width** | | | |
#> | min |0.1 |1.0 |1.4 |
#> | max |0.6 |1.8 |2.5 |
#> | mean (sd) |0.25 ± 0.11 |1.33 ± 0.20 |2.03 ± 0.27 |
#> |**Species** | | | |
#> | Setosa |50 (100) |0 (0) |0 (0) |
#> | Versicolor |0 (0) |50 (100) |0 (0) |
#> | Virginica |0 (0) |0 (0) |50 (100) |
由 reprex package (v0.3.0)
于 2020 年 3 月 1 日创建
我正在试用 qwraps2 包及其一些功能。我尤其对用于输出的 summary_table 工具感兴趣。 我正在使用 iris 数据集进行练习,但在 summary_table:
中使用 group_by 时,我发现有些奇怪library(datasets)
data("iris")
options(qwraps2_markup = "markdown")
our_summary1 <-
list("Sepal Length" =
list("min" = ~ min(iris$Sepal.Length),
"max" = ~ max(iris$Sepal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Sepal.Length)),
"Sepal Width" =
list("min" = ~ min(iris$Sepal.Width),
"median" = ~ median(iris$Sepal.Width),
"max" = ~ max(iris$Sepal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Sepal.Width)),
"Petal Length" =
list("min" = ~ min(iris$Petal.Length),
"max" = ~ max(iris$Petal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Sepal.Length)),
"Petal Width" =
list("min" = ~ min(iris$Petal.Width),
"max" = ~ max(iris$Petal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(iris$Petal.Width)),
"Species" =
list("Setosa" = ~ qwraps2::n_perc0(iris$Species == "setosa"),
"Versicolor" = ~ qwraps2::n_perc0(iris$Species == "versicolor"),
"Virginica" = ~ qwraps2::n_perc0(iris$Species == "virginica"))
)
bytype <- qwraps2::summary_table(dplyr::group_by(iris,Species),our_summary1)
bytype
我得到的输出是: output from the above code
这没有意义,它说不同花种的不同变量的统计数据是相同的,它们不是。我通过这样做交叉检查了这个:
aggregate(iris[1:4], list(iris$Species), mean)
这表明,例如,不同变量的平均值因物种而异。
为什么 dplyr::group_by
没有做它应该做的事?
我尽我所能发布输出,抱歉,谢谢您的理解。
尝试在声明变量时使用 .data$ 而不是 iris$。我遇到了同样的问题,这解决了它。
group_by
调用似乎没有做任何事情的原因是因为
摘要定义中未使用数据代词 .data
。作为
写的,摘要 table 是基于整个 iris
数据集构建的,
无论任何分组或子集。需要 .data
代词,所以
summary_table
背后的 tidyverse
工具使用正确的
范围。
library(datasets)
library(qwraps2)
library(dplyr)
#>
#> Attaching package: 'dplyr'
#> The following objects are masked from 'package:stats':
#>
#> filter, lag
#> The following objects are masked from 'package:base':
#>
#> intersect, setdiff, setequal, union
data("iris")
options(qwraps2_markup = "markdown")
our_summary1 <-
list("Sepal Length" =
list("min" = ~ min(.data$Sepal.Length),
"max" = ~ max(.data$Sepal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Sepal.Length)),
"Sepal Width" =
list("min" = ~ min(.data$Sepal.Width),
"median" = ~ median(.data$Sepal.Width),
"max" = ~ max(.data$Sepal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Sepal.Width)),
"Petal Length" =
list("min" = ~ min(.data$Petal.Length),
"max" = ~ max(.data$Petal.Length),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Sepal.Length)),
"Petal Width" =
list("min" = ~ min(.data$Petal.Width),
"max" = ~ max(.data$Petal.Width),
"mean (sd)" = ~ qwraps2::mean_sd(.data$Petal.Width)),
"Species" =
list("Setosa" = ~ qwraps2::n_perc0(.data$Species == "setosa"),
"Versicolor" = ~ qwraps2::n_perc0(.data$Species == "versicolor"),
"Virginica" = ~ qwraps2::n_perc0(.data$Species == "virginica"))
)
bytype <- qwraps2::summary_table(dplyr::group_by(iris,Species),our_summary1)
bytype
#>
#>
#> | |Species: setosa (N = 50) |Species: versicolor (N = 50) |Species: virginica (N = 50) |
#> |:-----------------------|:------------------------|:----------------------------|:---------------------------|
#> |**Sepal Length** | | | |
#> | min |4.3 |4.9 |4.9 |
#> | max |5.8 |7.0 |7.9 |
#> | mean (sd) |5.01 ± 0.35 |5.94 ± 0.52 |6.59 ± 0.64 |
#> |**Sepal Width** | | | |
#> | min |2.3 |2.0 |2.2 |
#> | median |3.4 |2.8 |3.0 |
#> | max |4.4 |3.4 |3.8 |
#> | mean (sd) |3.43 ± 0.38 |2.77 ± 0.31 |2.97 ± 0.32 |
#> |**Petal Length** | | | |
#> | min |1.0 |3.0 |4.5 |
#> | max |1.9 |5.1 |6.9 |
#> | mean (sd) |5.01 ± 0.35 |5.94 ± 0.52 |6.59 ± 0.64 |
#> |**Petal Width** | | | |
#> | min |0.1 |1.0 |1.4 |
#> | max |0.6 |1.8 |2.5 |
#> | mean (sd) |0.25 ± 0.11 |1.33 ± 0.20 |2.03 ± 0.27 |
#> |**Species** | | | |
#> | Setosa |50 (100) |0 (0) |0 (0) |
#> | Versicolor |0 (0) |50 (100) |0 (0) |
#> | Virginica |0 (0) |0 (0) |50 (100) |
由 reprex package (v0.3.0)
于 2020 年 3 月 1 日创建