【发布时间】:2017-06-04 14:36:38
【问题描述】:
> dput(mydat)
structure(list(Q1 = c(0, 1, NA, 1), Q2 = c(0, 1, 1, 1), Q3 = c(1,
NA, 1, 1), Gender = structure(c(2L, 2L, 1L, 1L), .Label = c("F",
"M"), class = "factor"), Type = c("A", "A", "A", "B")), .Names = c("Q1",
"Q2", "Q3", "Gender", "Type"), row.names = c(NA, -4L), class = "data.frame")
> mydat
Q1 Q2 Q3 Gender Type
1 0 0 1 M A
2 1 1 NA M A
3 NA 1 1 F A
4 1 1 1 F B
我有一个包含 3 个问题和 2 个人口统计变量的数据框。我写了一个函数来输出一个汇总表。
myfun <- function(from, to){
tt = t(rowsum(mydat[from:to], mydat$Gender, na.rm = TRUE))
ptt = prop.table(tt, 2)
fish = fisher.test(tt, simulate.p.value = TRUE)
tt2 = t(rowsum(mydat[from:to], mydat$Type, na.rm = TRUE))
ptt2 = prop.table(tt2, 2)
fish2 = fisher.test(tt2, simulate.p.value = TRUE)
list(rbind(cbind(Female = tt[, 1], ptt[, 1], Male = tt[, 2], ptt[, 2],
A = tt2[, 1], ptt2[, 1], B = tt2[, 2], ptt2[, 2]),
c(fish$p.value, NA, NA, NA, fish2$p.value, NA, NA, NA)))
}
tab = myfun(1, 2)
>tab
[[1]]
Female Male A B
Q1 1 0.3333333 1 0.5 1 0.3333333 1 0.5
Q2 2 0.6666667 1 0.5 2 0.6666667 1 0.5
1 NA NA NA 1 NA NA NA
这个函数接受 2 个参数(从,到),告诉函数我要选择哪些问题。在我的示例中,我选择了问题 1 和 2。我希望该函数输出一个计数及其相应的比例。表格的最后一行是反映问题与人口统计变量(性别或类型)之间关联的 p 值。
xtable(data.frame(tab))
调用上面的函数会得到下面的 LaTeX 表格:
我想要的是:
表格中的条目在每个单元格中显示为count (proportion),而不是单独的比例列。有没有更有效的方法来做到这一点?也许在 Hmisc 中?
【问题讨论】:
-
您可以查看
tables::tabfreq。