簡體   English   中英

在 qwraps::summary_table 中添加 p 值列

[英]Add p-value column in qwraps::summary_table

我想使用qwraps::summary_table為 R-Markdown 的同事制作一個小匯總表。 data.frame 包含不同曝光的信息。 所有變量都編碼為二進制。

library(qwraps2)
library(dplyr)

pop <- rbinom(n = 1000, size = 1, prob = runif(n = 10, min = 0, max = 1))
exp <- rbinom(n = 1000, size = 1, prob = .5)

ID <- c(1:500)
therapy <- factor(sample(x = pop, size = 500, replace = TRUE), labels = c("Control", "Intervention"))
exp_1 <- sample(x = exp, size = 500, replace = TRUE)
exp_2 <- sample(x = exp, size = 500, replace = TRUE)
exp_3 <- sample(x = exp, size = 500, replace = TRUE)
exp_4 <- sample(x = exp, size = 500, replace = TRUE)

df <- data.frame(ID, exp_1, exp_2, exp_3, exp_4, therapy)
head(df)

在下一步中,我將創建一個簡單的匯總表,如下所示。 在表中,我希望將組(控制與干預)作為列,將暴露作為行:

my_summary <-
  list(list("Exposure 1" = ~ n_perc(exp_1 %in% 1),
            "Exposure 2" = ~ n_perc(exp_2 %in% 1),
            "Exposure 3" = ~ n_perc(exp_3 %in% 1),
            "Exposure 4" = ~ n_perc(exp_4 %in% 1))
       )

my_table <- summary_table(group_by(df, therapy), my_summary)
my_table

在下一步中,我想添加另一列,其中包含控制組和干預組之間組差異的 p 值,例如fisher.test 我在?qwraps::summary_tablecbind是 class qwraps2_summary_table的合適方法,但老實說,我正在努力解決它。 我嘗試了不同的方法,但不幸的是失敗了。

有沒有一種方便的方法可以通過qwraps::summary_table添加單個列,尤其是根據分組列添加 p 值?

謝謝你的幫助!

最好的,
弗洛里安

[已解決] 同時,在對該主題進行了大量研究之后,我發現了一種添加 p.values 列的便捷方法。 也許這不是最聰明的解決方案,但至少對我來說是有效的。

首先,我使用 function 計算 p.values,它從 Fisher.test 返回的 output 中提取fisher.test ,並將它們存儲在 object 中,例如一個簡單的向量:

# write function to extract fishers.test
fisher.pvalue <- function(x) {
     value <- fisher.test(x)$p.value
     return(value)
 }

# fisher test/generate pvalues
p.vals <- round(sapply(list(
  table(df$exp_1, df$therapy),
  table(df$exp_2, df$therapy),
  table(df$exp_3, df$therapy),
  table(df$exp_4, df$therapy)), fisher.pvalue), digits = 2)

在接下來的步驟中,我只是添加了一個名為P-Values的空表列,並將p.vals添加到列單元格中。

overall_table <- cbind(my_table, "P-Value" = "") # create empty column
overall_table[9:12] <- p.vals # add vals to empty column
# overall_table <- cbind(my_table, "P-Value" = p.vals) works the same way in one line of code

overall_table 

就我而言,我只是在overall_table中查找相應的單元格索引(對於P-Values = 9:12)並使用基本語法填充它們。 qwraps2的小插圖( https://cran.r-project.org/web/packages/qwraps2/vignettes/summary-statistics.html )中,作者使用正則表達式來識別正確的單元格(參見第 3.2 節)。

如果有其他方法可以將單個列添加到qwraps2::summary_table我會很高興看到它是如何可能的。

最好的,
弗洛里安

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM