【问题标题】:How to report percentages by rows in createtableone command in tableone package?如何在 tableone 包中的 createtableone 命令中按行报告百分比?
【发布时间】:2023-04-03 18:34:01
【问题描述】:

我想使用 r 中的 tableone 包中的 CreateTableOne 使用以下代码按行报告百分比

vars<-c( "Group1vsGroup2", "Single.Institution",  
           "Internal.Funding",  "National.Funding", 
           "Industr1.Funding")

CatVar<-c(  "Single.Institution",  
           "Internal.Funding",  "National.Funding", 
           "Industr1.Funding")


tab2 <- CreateTableOne(vars = vars, strata = "Group1vsGroup2",factorVars = CatVar,data = df,test = T);tab2<-print(tab2, margin=1,test = T, varLabels = T,quote = T,dropEqual = T)

我添加了“margin=1”,正如我在website 中看到的那样,虽然它是针对 tableone 命令(不是 CreateTableOne),但我得到了如下图所示的列百分比。任何建议将不胜感激。

【问题讨论】:

  • 我不认为CreateTableOne 有管理方向的论据。也许你应该试试cran.r-project.org/web/packages/Gmisc/vignettes/…,你可能需要做额外的打字,但你会从GmischtmlTable获得很大的灵活性
  • 非常感谢。我现在正在尝试 Gmisc,但无法确定正确的命令。我浏览了 Gmisc 文档,但还不能分配它。有什么意见吗?

标签: r row percentage


【解决方案1】:

这里是您可以开始使用的 MWE,有关详细信息,请参阅 ?Gmisc::getDescriptionStatsBy

library(Gmisc)
# Define cyl as a factor so that getDescriptionStatsBy can use the correct Gmisc::describe*
mtcars$cyl=as.factor(mtcars$cyl)
getTable1Stats <- function(x, digits = 0,...){
  getDescriptionStatsBy(x = x, 
                        by = mtcars$am,
                        digits = digits,
                        header_count = TRUE,
                        ...)
}

t1 <- list()
t1[["Gas"]] <- getTable1Stats(mtcars$mpg, add_total_col="last")
#hrzl_prop=FALSE will indicate that the proportions are to be interpreted in a vertical manner
t1[["Cylinder&dagger;"]] <- getTable1Stats(mtcars$cyl, hrzl_prop=TRUE, add_total_col="last")
t1[["Disp"]] <- getTable1Stats(mtcars$disp, continuous_fn=describeMedian, add_total_col="last")

mergeDesc(t1,
  htmlTable_args = list(css.rgroup = "",
  caption  = "Basic descriptive statistics from the mtcars dataset",
  tfoot = "&dagger; The weight is in 10<sup>3</sup> kg")
)

PS:此解决方案基于 Max 的小插图 here。有关htmlTable 的更多详细信息,您可以查看其小插图here

【讨论】:

  • 太棒了。非常感谢。在最后一列中,我们可以在每个单元格中放置 100% 吗?
  • 我不这么认为,因为最后一列应该代表有多少汽车有 Cyl=4、6 和 8。但如果你想这样做,你可以在发送之前修改表格/输出发给mergeDesc。这是一个例子cyl &lt;- getTable1Stats(mtcars$cyl, hrzl_prop=TRUE, add_total_col="last");cyl[,3] &lt;- c("11 (100%)", "7 (100%)", "14 (100%)" );t1[["Cylinder&amp;dagger;"]]&lt;-cyl
  • 抱歉,有没有办法以百分比报告小数点后 1 位,因为我注意到它报告的百分比没有任何小数位?
  • @MohamedRahouma 只是更改了 getTable1Stats 中的变量 digits,默认为 0,即没有小数。 digits 可以在定义函数或调用函数时更改。
  • 非常感谢。有用。无论如何要报告某个级别,因为我有一些变量编码为 0 和 1,我只需要知道表中的级别 1?
猜你喜欢
  • 2012-12-14
  • 2017-06-03
  • 1970-01-01
  • 1970-01-01
  • 2023-03-24
  • 2022-01-23
  • 2017-06-29
  • 1970-01-01
相关资源
最近更新 更多