【问题标题】:Variables Overview with xtable in RR中xtable的变量概述
【发布时间】:2011-05-05 15:18:30
【问题描述】:

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

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

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

methods(xtable)

有什么想法吗?

【问题讨论】:

  • xtable(summary(cars))?
  • str 的问题在于它没有给出输出。也许是`xtable(cars[1:10,])´
  • 嘿马诺尔!感谢您的想法,但我想对变量进行规范。像汽车:整数,品牌:因素(宝马,大众,奔驰)。

标签: r statistics xtable


【解决方案1】:

另一个要查看的包是reporttools。这是一段简短的代码,用于说明它在 reshape 包中的 tips 数据集上的用法。两个摘要语句都生成乳胶代码,可以复制粘贴到文档中,或用于编织。

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))

报告工具的输出:

【讨论】:

  • 你好拉姆纳特!这非常接近我的需要。到目前为止感谢!我真正想要的是将表格合并为连续值和分类值!但我不需要的是描述性统计数据......我需要的是接近基本 R 中的 str() 命令,但对于 Latex 来说是一种好看的方式。也许这是不可能的,我必须创建一个手动表......我想知道为什么没有简单的命令,因为经常需要引入变量,让读者熟悉你正在处理的内容:)跨度>
【解决方案2】:

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

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

标签和单位可以绑定(在内部,作为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 
--------------------------------------------------------------------------------

【讨论】:

  • 嘿chl!非常有趣的包。我尝试了您提供的命令,似乎值得花一些时间学习应用!真的很快:我尝试使用“Latex(str(x))”命令(我知道这只是一个愚蠢的尝试),但它似乎是一种不同的计算 Latex 代码的方法(与 xtable 命令相比)。我只需要对变量进行简短概述,因为它是由 str() 提供的。 contents() 和 describe() 在获取有关数据的一些信息方面比 str() 好得多,但我需要的是一个简短的总结!
【解决方案3】:

由于xtabledata.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 将输出返回到标准输出,因此您无法检索特定变量的摘要。在这种情况下,sapply 将简化结果,产生matrix 而不是data.frame。但这不是问题,对吧?

【讨论】:

  • 感谢您的努力!这对我将来构建 xtable 命令非常有帮助!但我只需要列中的变量和级别,如上图所示!不需要任何描述性统计数据:)
  • 嗯……那是完全不同的东西。你应该这么说的。您能否重新表述您的问题,以便我们以不同的方式解决它?请务必提供一些虚拟数据。
【解决方案4】:

你也可以看看,

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)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 2018-08-29
    • 1970-01-01
    • 2019-08-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多