12

我想知道是否可以xtable从命令创建一个str(x)以从您使用的变量中获得概述。这将是一个很好的功能,可以将某人介绍给数据集,但自己创建它很烦人。所以我试着做一个xtable这样的:

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

汽车数据集是从 R 中给出的。不幸的是xtable,它没有给出str(). 这里有可能比 R 更聪明吗?以下是xtable可以理解的主要命令:

methods(xtable)

有任何想法吗?

4

4 回答 4

17

另一个要查看的包是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))

报告工具的输出:在此处输入图像描述在此处输入图像描述

于 2011-05-05T17:45:11.460 回答
14

如果您愿意花一些时间研究Hmisc包的工作原理,您很快就会发现有许多实用程序可以促进此类任务。特别是,该contents()方法通过报告方便了对data.frame的描述

名称、标签(如果有)、单位(如果有)、因子水平数(如果有)、因子水平、类别、存储模式和 NA 数量

标签和单位可以绑定(在内部, as attributes)到每个变量。有用于查看和导出的关联print,html和方法。latex

另一个不错的功能是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 
--------------------------------------------------------------------------------
于 2011-05-05T16:01:51.107 回答
10

由于与和对象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 。each是一个非常通用的功能,因为您可以很容易地定义自定义摘要。此外,str将输出返回到标准输出,因此您无法检索特定变量的摘要。在这种情况下,sapply将简化结果,matrix而是产生data.frame. 但这不是那么成问题,对吧?

于 2011-05-05T17:49:41.343 回答
0

你也可以看看,

library(magrittr)
    library(qwraps2)

    mtcars2 <-
      dplyr::mutate(mtcars,
                    cyl_factor = factor(cyl,
                                        levels = c(6, 4, 8),
                                        labels = paste(c(6, 4, 8), "cylinders")),
                    cyl_character = paste(cyl, "cylinders"))

    our_summary1 <-
      list("Miles Per Gallon" =
             list("min" = ~ min(.data$mpg),
                  "max" = ~ max(.data$mpg),
                  "mean (sd)" = ~ qwraps2::mean_sd(.data$mpg)),
           "Displacement" =
             list("min" = ~ min(.data$disp),
                  "median" = ~ median(.data$disp),
                  "max" = ~ max(.data$disp),
                  "mean (sd)" = ~ qwraps2::mean_sd(.data$disp)),
           "Weight (1000 lbs)" =
             list("min" = ~ min(.data$wt),
                  "max" = ~ max(.data$wt),
                  "mean (sd)" = ~ qwraps2::mean_sd(.data$wt)),
           "Forward Gears" =
             list("Three" = ~ qwraps2::n_perc0(.data$gear == 3),
                  "Four"  = ~ qwraps2::n_perc0(.data$gear == 4),
                  "Five"  = ~ qwraps2::n_perc0(.data$gear == 5))
      )

    by_cyl <- summary_table(dplyr::group_by(mtcars2, cyl_factor), our_summary1)
    xtable(by_cyl)
于 2020-04-10T15:04:44.430 回答