-1

我想为我在 R-Markdown 中的同事使用qwraps::summary_table. 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 值添加单个列?

谢谢你的帮助!

最好的,
弗洛里安

4

1 回答 1

0

[已解决] 同时,在对该主题进行了大量研究之后,我发现了一种添加 p.values 列的便捷方法。也许这不是最聪明的解决方案,但至少对我来说是有效的。

首先,我用一个函数计算 p.values,该函数从返回的输出中提取 p.valuesfisher.test并将它们存储在一个对象中,在我的例子中是一个简单的数字向量:

# 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就我而言,我只是在(for = 9:12)中查找相应的单元P-Values格索引并使用基本语法填充它们。在qwraps2( https://cran.r-project.org/web/packages/qwraps2/vignettes/summary-statistics.html ) 的小插图中,作者使用正则表达式来识别正确的单元格(参见第 3.2 节)。

如果有其他方法可以向其中添加单个列,qwraps2::summary_table我将不胜感激,看看它是如何实现的。

最好的,
弗洛里安

于 2021-03-03T15:15:03.167 回答