我经常想为研究创建汇总表,在其中比较两组之间的几个变量,列出每个变量的值以及两组变量之间的差异。
例如,说我想比较年龄组(年轻人和年龄)和两组(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 =旧:
任何朝着正确方向轻拍的人都会受到赞赏。
谢谢!
答案 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