[英]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_table
中cbind
是 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.