我想使用tables-package中的tabular() - 函数对两个变量(例如v1和v2)进行交叉制表,并在表中显示chisq-test的p值。很容易得到交叉制表,但我不能得到表内的p值。这是我一直在尝试的,没有任何运气:
\documentclass{article}
\begin{document}
<<echo=TRUE,message=FALSE>>=
library(Hmisc)
library(tables)
v1 <- sample(letters[1:2],200,replace=TRUE)
v2 <- sample(month.name[1:3],200,replace=TRUE)
df <- data.frame(v1,v2)
@
It is straight forward to get the crosstabulation:
<<results='asis'>>=
latex( tabular( Factor(v1) ~ Factor(v2) , data=df) )
@
But I cant get the p-value inside the table:
<<results='asis'>>=
latex( tabular( Factor(v1)*chisq.test(v1,v2)$p.value ~ Factor(v2) , data=df) )
@
\end{document}
答案 0 :(得分:7)
我不知道如何使用tables::tabular
进行此操作,但这将使用Hmisc::summary.formula.reverse
进行,假设您已将系统配置为通过latex()生成pdf文件。我不得不搜索Rhelp档案,以确定'{1}}参数列表中需要的'exclude1'参数。回到文档后latex
确实出现在exclude1
的使用示例中,虽然我想到我正在阅读latex.summary.formula.reverse
的帮助页面:
summary.rms
如果要通过将输出分配给指定文件将其嵌入更长的文档中,可以“沿途”拦截乳胶输出。
library(Hmisc)
latex(summary( v2 ~ v1, data=df, method="reverse" ,test=TRUE), exclude1=FALSE)
答案 1 :(得分:0)
您还可以通过xtable()将卡方统计中的文本粘贴到标题中。例如:
#sample data
var1<-sample(c('A', 'B'), 10, replace=T)
var2<-sample(c('Red', 'Blue'), 10, replace=T)
#join in frequency table
tab<-table(var1, var2)
#conduct chisq.test
test<-chisq.test(tab)
#show values of chisq.test()
name(test)
#Use xtable, use print.xtable for further manipulations
out<-xtable(tab, caption=paste('Important table, chi-squared =', test$statistic, ', p=', test$p.value,',' ,test$parameter, 'df', sep=' '))
#print
out