2011-05-05 68 views
12

我不知道是否有可能从命令str(x)创建xtable摆脱您使用的变量的概述。这将是一个不错的功能,介绍别人的数据集,但它是讨厌自己去创造。所以whta我想是让xtable这样的:变量与xtable概述中的R

str(cars) 
require(xtable) 
xtable(str(cars)) 

汽车数据集是由R给出可惜xtable不给Latexcode为str()。在这里可以智取R吗?以下是xtable将会理解的主要命令:

methods(xtable) 

任何想法?

+1

'xtable(summary(cars))'? – James 2011-05-05 15:31:05

+0

str的问题在于它没有提供输出。也许'xtable(cars [1:10,])' – 2011-05-05 15:50:05

+0

嘿Manoel!感谢您的想法,但我想要了解变量的大小。像汽车:整数,品牌:因素(宝马,大众,奔驰)。 – user734124 2011-05-05 17:16:40

回答

9

由于xtable提供data.framesmatrix对象使用时最好的结果,我会建议这样的事情:

library(xtable) 
library(plyr) 
dtf <- sapply(mtcars, each(min, max, mean, sd, var, median, IQR)) 
xtable(dtf) 
% latex table generated in R 2.12.2 by xtable 1.5-6 package                 
% Thu May 5 19:40:08 2011                         
\begin{table}[ht]                            
\begin{center}                            
\begin{tabular}{rrrrrrrrrrrr}                         
    \hline                              
& mpg & cyl & disp & hp & drat & wt & qsec & vs & am & gear & carb \\              
    \hline                              
min & 10.40 & 4.00 & 71.10 & 52.00 & 2.76 & 1.51 & 14.50 & 0.00 & 0.00 & 3.00 & 1.00 \\          
    max & 33.90 & 8.00 & 472.00 & 335.00 & 4.93 & 5.42 & 22.90 & 1.00 & 1.00 & 5.00 & 8.00 \\         
    mean & 20.09 & 6.19 & 230.72 & 146.69 & 3.60 & 3.22 & 17.85 & 0.44 & 0.41 & 3.69 & 2.81 \\         
    sd & 6.03 & 1.79 & 123.94 & 68.56 & 0.53 & 0.98 & 1.79 & 0.50 & 0.50 & 0.74 & 1.62 \\          
    var & 36.32 & 3.19 & 15360.80 & 4700.87 & 0.29 & 0.96 & 3.19 & 0.25 & 0.25 & 0.54 & 2.61 \\         
    median & 19.20 & 6.00 & 196.30 & 123.00 & 3.70 & 3.33 & 17.71 & 0.00 & 0.00 & 4.00 & 2.00 \\        
    IQR & 7.38 & 4.00 & 205.18 & 83.50 & 0.84 & 1.03 & 2.01 & 1.00 & 1.00 & 1.00 & 2.00 \\          
    \hline                              
\end{tabular}                             
\end{center}                             
\end{table} 

对不起,冗长的输出。您可以抓取PDF hereeach是一个非常通用的功能,因为您可以很容易地定义自定义摘要。此外,str将输出返回到stdout,因此您无法检索特定变量的摘要。在这种情况下,sapply将简化结果,产生matrix而不是data.frame。但是这不是那么有问题,对吧?

+0

感谢你为你的努力!这对我将来构建xtable命令非常有帮助!但是我只需要列中的变量和水平,如上图所示!不需要任何描述性统计:) – user734124 2011-05-06 06:36:51

+0

嗯......这是完全不同的东西。你应该这么说。你能否重新提出你的问题,所以我们可以用不同的方式解决它?一定要提供一些虚拟数据。 – aL3xa 2011-05-06 08:54:58

+0

user734124 2011-05-06 21:10:00

14

如果你愿意花一些时间调查Hmisc包是如何工作的,你很快就会发现,有促进此类任务的许多实用工具。特别地,该方法contents()通过报告

名称,标签(如果有的话),单位便于data.frame的描述(如果 任何),因子水平的数目(如果 任何),因子的水平,类,存储 模式,和NAS

标签和单元的数量可以绑定(内部,如图attributes)到每个变量。 有关联的浏览和出口printhtmllatex方法。

另一个不错的功能是describe()功能,如下图所示:

> describe(cars) 
cars 

2 Variables  50 Observations 
-------------------------------------------------------------------------------- 
speed 
     n missing unique Mean  .05  .10  .25  .50  .75  .90 
    50  0  19 15.4  7.0  8.9 12.0 15.0 19.0 23.1 
    .95 
    24.0 

      4 7 8 9 10 11 12 13 14 15 16 17 18 19 20 22 23 24 25 
Frequency 2 2 1 1 3 2 4 4 4 3 2 3 4 3 5 1 1 4 1 
%   4 4 2 2 6 4 8 8 8 6 4 6 8 6 10 2 2 8 2 
-------------------------------------------------------------------------------- 
dist 
     n missing unique Mean  .05  .10  .25  .50  .75  .90 
    50  0  35 42.98 10.00 15.80 26.00 36.00 56.00 80.40 
    .95 
    88.85 

lowest : 2 4 10 14 16, highest: 84 85 92 93 120 
-------------------------------------------------------------------------------- 
+0

Hey chl! 非常有趣的包。我尝试了你提出的命令,似乎值得花一些时间学习应用!真的很快:我试图使用'Latex(str(x))'命令(我知道这只是一个不错的尝试),但它似乎是计算Latex代码的另一种方式(与xtable命令相比)。我只需要简要概述变量,因为它是通过str()提供的。 contents()和describe()比str()好得多一些关于数据的信息,但我需要的是一个简短的总结! – user734124 2011-05-05 17:33:36

16

另一个包看就是reporttools。下面是一个短的一段代码来说明在数据集tips其使用从reshape包。两者汇总报表产生可复制粘贴到文档,或用于编织胶乳代码。

library(reporttools) 
data(tips, package = 'reshape') 

# summarize numeric variables 
tableContinuous(tips[,sapply(tips, is.numeric)]) 

# summarize non-numeric variables 
tableNominal(tips[,!sapply(tips, is.numeric)]) 

编辑。如果你真的必须使用str,那么这里就是去做

str_cars = capture.output(str(cars)) 
xtable(data.frame(str_cars)) 

输出REPORTTOOLS一种方法:enter image description hereenter image description here

+1

你好Ramnath!这非常接近我所需要的。非常感谢!我真正希望拥有的是将表格连续值和分类值合并!但是我不需要的是描述性的统计数据......我需要的是接近基本R中的str()命令,但是对于Latex来说,这是一个很好的方式。也许这是不可能的,我必须创建一个曼努埃尔表...我想知道为什么没有简单的命令,因为它通常需要引入变量,使读者熟悉你正在处理的内容:) – user734124 2011-05-06 07:34:38