Frage

Ich bin die Erzeugung einer Menge ftable() crosstabulations für einen aussagekräftigen Bericht.Beispiel:

              AUS  BEL  BUL  EST  FRA  GEO  GER  HUN  ITA  NET  NOR  ROM  RUS

30- primary    0.06 0.03 0.07 0.03 0.02 0.03 0.03 0.02 0.05 0.03 0.05 0.04 0.02
    secondary  0.30 0.09 0.16 0.10 0.10 0.14 0.10 0.16 0.11 0.08 0.08 0.09 0.11 
    tertiary   0.05 0.07 0.04 0.05 0.07 0.06 0.02 0.04 0.02 0.05 0.06 0.02 0.09
30+ primary    0.07 0.16 0.12 0.07 0.16 0.03 0.05 0.11 0.35 0.21 0.09 0.17 0.03
    secondary  0.40 0.20 0.30 0.29 0.25 0.35 0.35 0.34 0.27 0.20 0.27 0.34 0.26
    tertiary   0.13 0.23 0.13 0.18 0.17 0.17 0.18 0.09 0.09 0.23 0.23 0.06 0.24
60+ primary    0.00 0.12 0.10 0.13 0.14 0.07 0.05 0.12 0.09 0.11 0.06 0.19 0.12
    secondary  0.00 0.05 0.05 0.08 0.06 0.10 0.14 0.09 0.02 0.04 0.11 0.07 0.06
    tertiary   0.00 0.05 0.03 0.06 0.03 0.04 0.07 0.03 0.01 0.05 0.06 0.02 0.07

Ich bin auf der Suche nach einer Funktion, die könnte nehmen Sie die ftable() oder table() Ausgabe, und highligh Werte, die abweichen, die Zeile, bedeuten, dass ein oder weisen Sie einen gesamthöhenunterschied auf den text der Werte, z.B.von 0-100% die Werte sind farbig, von rot auf grün.

Die Ausgabe erfolgt heute durch knitr,, aber ich bin mir nicht sicher, an welchem Punkt in der toolchain, ich könnte eingreifen und fügen Sie Farbe auf der Grundlage der relativen Größe der Werte.

War es hilfreich?

Lösung

Sie verwenden können die latex Funktion Hmisc Paket.

# Example shamelessly copied from http://www.karlin.mff.cuni.cz/~kulich/vyuka/Rdoc/harrell-R-latex.pdf
cat('
  \\documentclass{article}
  \\usepackage[table]{xcolor}
  \\begin{document}
  <<results=tex>>=
  library(Hmisc)
  d <- head(iris)
  cellTex <- matrix(rep("", nrow(d) * ncol(d)), nrow=nrow(d))
  cellTex[2,2] <- "cellcolor{red}"
  cellTex[2,3] <- "color{red}"
  cellTex[5,1] <- "rowcolor{yellow}"
  latex(d, file = "", cellTexCmds = cellTex, rowname=NULL)
  @
  \\end{document}',
  file="tmp.Rnw" )
Sweave("tmp.Rnw")
library(utils)
texi2pdf("tmp.tex")

Andere Tipps

Zum erzeugen von latex-Tabellen aus R-Objekte, die Sie verwenden können, die xtable Paket.Es ist verfügbar auf CRAN, nehmen Sie einen Blick in die Dokumentation.Um die Farbe in der Tabelle, verwenden Sie die color latex-Paket.Einige Beispiel-code:

library(xtable)
n = 100
cat_country = c("NL","BE","HU")
cat_prim = c("primary","secondary","tertiary")
dat = data.frame(country = sample(cat_country, n, replace = TRUE), 
                 prim = sample(cat_prim, n, replace = TRUE))
ftable_dat = ftable(dat)

## Make latex table:
latex_table = xtable(as.table(ftable_dat))

Zu bekommen, was Sie wollen, machte ich den folgenden hack (ugly one).Der trick ist, drucken Sie den xtable-Objekt und Bearbeiten Sie diese:

latex_table = within(latex_table, {
#   browser()
  primary = ifelse(primary > 12, sprintf("\\textbf{%s}", primary), primary)
  #primary = sub("\\{", "{", primary)
})
printed_table = print(latex_table)
printed_table = sub("backslash", "\\", printed_table)
printed_table = sub("\\\\}", "}", printed_table)
printed_table = sub("\\\\\\{", "{", printed_table)
printed_table = sub("\\$", "\\", printed_table)
printed_table = sub("\\$", "\\", printed_table)
cat(printed_table)

Das führt zu:

% latex table generated in R 2.14.1 by xtable 1.6-0 package
% Thu Feb 16 13:10:55 2012
\begin{table}[ht]
\begin{center}
\begin{tabular}{rrrr}
  \hline
 & primary & secondary & tertiary \\ 
  \hline
BE & 10 &   5 &  11 \\ 
  HU & \textbf{13} &  13 &   8 \\ 
  NL & 11 &  17 &  12 \\ 
   \hline

\end{tabular} \end{center} \end{table}

In diesem Beispiel wird eine Zahl in die primäre Kategorie Fett, aber es kann Arbeit für Einfärbung nur als leicht.Vielleicht hat jemand eine elegantere Lösung?

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top