Vue d'ensemble des variables avec xtable dans R
-
29-10-2019 - |
Question
Je me demande s'il est possible de créer un xtable
à partir de la commande str(x)
pour avoir un aperçu des variables que vous utilisez.Ce serait une fonctionnalité intéressante pour présenter à quelqu'un le jeu de données, mais c'est ennuyeux de le créer vous-même.Donc, ce que j'ai essayé, c'est de créer un xtable
comme ceci:
str(cars)
require(xtable)
xtable(str(cars))
le jeu de données cars provient de R. Malheureusement, xtable
ne donne pas de Latexcode pour str()
.Est-il possible de déjouer R ici?Voici les principales commandes que xtable
comprendra:
methods(xtable)
Des idées?
La solution
Puisque xtable
fournit le meilleur résultat lorsqu'il est utilisé avec des objets data.frames
et matrix
, je recommande quelque chose comme ceci:
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}
Désolé pour la longue sortie.Vous pouvez récupérer le PDF ici .each
est une fonction très polyvalente, car vous pouvez définir un résumé personnalisé assez facilement.En outre, str
renvoie la sortie à stdout, vous ne pouvez donc pas récupérer le résumé pour des variables spécifiques.Dans ce cas, sapply
simplifiera le résultat, produisant matrix
à la place data.frame
.Mais ce n'est pas si problématique, non?
Autres conseils
Un autre paquet à examiner est reporttools
.Voici un court morceau de code pour illustrer son utilisation sur l'ensemble de données tips
du package reshape
.Les deux instructions récapitulatives produisent du code latex qui peut être copié dans un document ou utilisé pour le tissage.
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)])
MODIFIER.Si vous DEVEZ vraiment utiliser str
, alors voici une façon de procéder
str_cars = capture.output(str(cars))
xtable(data.frame(str_cars))
SORTIE DE REPORTTOOLS:
Si vous souhaitez passer un peu de temps à étudier comment Hmisc fonctionne, vous découvrirez bientôt qu'il existe de nombreux utilitaires qui facilitent de telles tâches.En particulier, la méthode contents()
facilite la description de data.frame en rapportant
noms, étiquettes (le cas échéant), unités (si any), nombre de niveaux de facteur (si any), niveaux de facteurs, classe, stockage mode et nombre de NA
Les étiquettes et les unités peuvent être liées (en interne, en tant que attributes
) à chaque variable.
Il existe des méthodes associées print
, html
et latex
pour l'affichage et l'exportation.
Une autre fonctionnalité intéressante est la fonction describe()
, comme indiqué ci-dessous:
> 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
--------------------------------------------------------------------------------