使用Hmisc包(R)生成类似过程报告(SAS)的输出?
我一直在尝试使用Hmisc包来产生类似于下面的输出使用Hmisc包(R)生成类似过程报告(SAS)的输出?,r,hmisc,R,Hmisc,我一直在尝试使用Hmisc包来产生类似于下面的输出 Group Step Method G1 G2 G3 ....... s1 m1 N 45 26 17 Min 2
Group
Step Method G1 G2 G3 .......
s1 m1 N 45 26 17
Min 2 2 3
Max 7 6 4
Mean 3.5 4.5 2.5
Sdev 2.6 3.6 1
m2 N
Min
Max
Mean
Sdev
s2 m1 N
Min
Max
Mean
Sdev
m2 N
Min
Max
Mean
Sdev
我的原始数据如下所示
Site Step Method Group Outcome
a1 s1 m1 g1 3.6
a1 s1 m4 g1 2.3
a2 s2 m1 g2 14
a3 s1 m3 g1 7
a3 s3 m6 g1 1
a4 s1 m1 g3 6.2
我试图通过步骤和方法计算每组所有现场结果的n、min、mean、sdev和max。我正在使用这些站点作为我的唯一标识符。不是每个站点都有每个步骤,也不是每个步骤都有每个方法,因此缺少值。我一直在玩Hmisc软件包,并且能够使用fun=summary
计算n、mean、min和max,
但我只能对每种方法单独执行,并且它显示在一个不太漂亮的矩阵中。我知道这个包使用了latex(我对此完全是新手),我使用了summary(..,file=“data.tex”)
中的选项,我认为这是为了保存一个.dvi文件,我右键单击该文件并告诉它转换为pdf,但是pdf在错误的位置上显示数据时被破坏了。我真的不知道我做错了什么,所以非常感谢任何反馈/意见。
干杯 我假设您不关心格式(可能不正确),您可以使用
aggregate
函数:)
假设您的数据如下所示
# read in your data
x <- read.table( h = T , text = "Site Step Method Group Outcome
a1 s1 m1 g1 3.6
a1 s1 m4 g1 2.3
a2 s2 m1 g2 14
a3 s1 m3 g1 7
a3 s3 m6 g1 1
a4 s1 m1 g3 6.2")
tables
包中的tabular
函数用于创建类似SAS的表。
您可以尝试以下方法(dat
being您的示例数据):
同样,使用
表格(Site*Step*…)
这正是我一直在寻找的东西。我得到了表格工作,但遇到了一些错误。最主要的一点是,当我尝试同时为所有方法运行tablar时,我得到了错误“计算嵌套太深:无限递归/选项(表达式=)?”。当我一次只使用一个方法时,我会使用tabular,但是当我使用latex(tab1)给我latex代码时,我复制并粘贴了它,在我的Tex东西中会出现错误“Missing\begin{document}”。谢谢你的建议。至于第一个问题,如果没有你使用的数据和代码,很难说。你能发布你触发错误的代码吗?您的数据可以在web上自由访问吗?至于第二个问题:latex(tab1)只提供表的latex代码,在您的文档中,您需要将它放在\documentclass{article}\begin{document}…\end{document}之间,其中。。。代码是由latex生成的(表1),但这更多的是latex问题,而不是RThanks。我消除了无限递归错误。我想这是我反应向量中的一个隐藏字符。我把它拿出来,它现在就跑了。我也创建了pdf,但是输出在页面上被截断,它只打印一页输出,即使它需要第二页。@user2117897:试试latex(tab1,options=list(tablar=“longtable”))
# read in your data
x <- read.table( h = T , text = "Site Step Method Group Outcome
a1 s1 m1 g1 3.6
a1 s1 m4 g1 2.3
a2 s2 m1 g2 14
a3 s1 m3 g1 7
a3 s3 m6 g1 1
a4 s1 m1 g3 6.2")
# alternatively, you can tack a standard deviation onto the summary function if you like..
swsd <- function( x ) c( summary( x ) , sd( x ) )
# ..and then run that through `aggregate` instead :)
aggregate( Outcome ~ Step + Method + Group , data = x , swsd )
library(tables)
(tab1 <- tabular(Step*Method*Heading()*Outcome*((n = 1) + min + max + mean + sd) ~ Group,
data = dat))
Group
Step Method g1 g2 g3
s1 m1 n 1.0 0 1.0
min 3.6 Inf 6.2
max 3.6 -Inf 6.2
mean 3.6 NaN 6.2
sd NA NA NA
m3 n 1.0 0 0.0
min 7.0 Inf Inf
max 7.0 -Inf -Inf
mean 7.0 NaN NaN
sd NA NA NA
... ... ... ...
tabular(Step*RowFactor(Method, levelnames = c("M1", "M2", "M3", "M4"), spacing = 1)*
Heading()*Outcome*
(Format()*(N= 1) + (Min = min) + (Max = max) + (Mean = mean) +
(Sdev = sd)) ~
Factor(Group, levelnames = c("G1", "G2", "G3")),
data = dat)