2011-05-05 67 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