更改Hmisc摘要()返回的摘要变量

时间:2010-09-15 14:17:38

标签: r

是否可以通过Hmisc R库轻松获取summary.formulamethod="reverse"返回的传统四分位数?我想得到每个连续变量的均值/标准差+最小值/最大值,但没有成功。可以通过参数fun传递自定义函数调用,但在method="reverse"时它不起作用。

3 个答案:

答案 0 :(得分:3)

Arf ...我只是查看summary.formula()包中的Hmisc代码,我可以确认在计算机命令行上打印时确实计算了Mean和SD但未显示。因此,在调用print()函数时,我们必须明确地要求它,例如

library(Hmisc)
df <- data.frame(g=sample(LETTERS[1:3], 100, rep=TRUE), replicate(3, rnorm(100)))
s <- summary(g ~ ., method="reverse", data=df)
latex(s, prmsd=TRUE, digits=2)  # replace latex by print to output inline

产生下表:

alt text

答案 1 :(得分:2)

是否必须在Hmisc包中?如果你有一个连续变量的数据框,你可以通过简单使用reshape包得到相同的结果:

df <- data.frame(a=rnorm(100),b=rnorm(100),c=rnorm(100))

f.summary <- function(x) {
x <- melt(x)
x <- cast(x, variable ~ ., c(mean, sd, min, max))
return(x)
} 

f.summary(df)

HTH

答案 2 :(得分:1)

答案是否定的。软件包作者已经决定(正如他在Gnark所关联的帖子中所述),最小,最大和标准错误是(释义)“肯定不是描述性的连续变量的分类组。

您可以在prmsd=TRUE中设置print.summary.formula.reverse以获得均值和标准偏差,但无法获得最小值或最大值。

> Data <- data.frame(y=sample(1:2,20,TRUE),x=rnorm(20))
> print(summary.formula(y ~ x,data=Data,method="reverse"),prmsd=TRUE)


Descriptive Statistics by y

+-+---------------------------------------------------------+---------------------------------------------------------+
| |1                                                        |2                                                        |
| |(N=11)                                                   |(N=9)                                                    |
+-+---------------------------------------------------------+---------------------------------------------------------+
|x|-0.5382053/-0.3375862/ 0.3093839  -0.1434995+/- 1.1113628|-0.4464168/-0.1677906/ 0.3007129   0.1234988+/- 0.9666382|
+-+---------------------------------------------------------+---------------------------------------------------------+