在R中,创建一个包含两组比较的汇总表

时间:2018-07-10 00:55:37

标签: r

我经常想为研究创建汇总表,在其中比较两组之间的几个变量,列出每个变量的值以及两组变量之间的差异。

例如,说我想比较年龄组(年轻人和年龄)和两组(A和B)之间的男性比例。我想得出一个表格,其中每个变量都有行(年龄,男性),然后为每组重复以下变量的列(分子,分母,比率,两个比率之间的差异,95%CI,卡方的p值)。

我正在寻找这种类型的桌子的通用方法。

假设我有下表:

library(dplyr)    
AgeGroup <- sample(c("Young", "Old"), 10, replace = TRUE)
Gender <- sample(c("Male", "Female"), 10, replace = TRUE)
df <- data.frame(AgeGroup, Gender)
df

我可以轻松创建一个摘要表,而无需进行比较:

df1 <- df %>%
  group_by(AgeGroup) %>%
  summarise(num_M = sum(Gender == "Male"),
            den_M = n(),
            prop_M = num_M/den_M)
df1

但是我不知道如何在分组数据的不同行之间创建其他比较列。假设我想对每个AgeGroup中的男性比例进行chi.sq测试,然后将p值添加到上面的汇总表中。

看起来像这样(显然,数字是示例),Y =年轻,O =旧:

enter image description here

任何朝着正确方向轻拍的人都会受到赞赏。

谢谢!

1 个答案:

答案 0 :(得分:4)

我喜欢汇总表的finalfit软件包。如果您需要添加自定义汇总功能,它可能不够灵活,但是其默认统计信息涵盖了示例中您要求的所有内容,例如每个组中的数字,比例和卡方检验。如果您有连续变量,它将计算每组中的均值和标准差。

library(finalfit)

finalfit::summary_factorlist(
    df,
    dependent = "Gender", 
    explanatory = "AgeGroup",
    total_col = TRUE,
    p = TRUE
)

输出:

     label levels   Female      Male Total     p
1 AgeGroup    Old  0 (0.0) 6 (100.0)     6 0.197
2           Young 1 (25.0)  3 (75.0)     4