möglich, Latex-Multicolumns in xtable zu erstellen?
Ich bin mit xtable mit R Markdown " und knitr zu produzieren .tex-Dateien, die ich mit \input{}. Funktioniert Super, aber ich habe nicht herausgefunden, wie man erstellen Sie multicolumns wie in der Abbildung hier. Weiß jemand, wie man an diese?
Bisher bin ich mit:
tbl <- xtable(data, align="l r r r r r")
colnames(tbl) <- c("Variable",
"Mean", "Std Dev",
"Mean", "Std Dev",
"Difference")
caption(tbl) <- c("Table Title")
print(tbl,
include.rownames=FALSE,
caption.placement="top",
booktabs=TRUE,
type="latex",
file="output.tex")
Ich würde gerne haben eine andere Gruppierung überschrift über jeder "Mean" und "Std Dev" ("Behandlung" und "Kontrolle").
Alternativ gibt es eine bessere Methode für die Verwendung der R-Markdown/knitr zum automatischen generieren von Tabellen? Ich will nicht manuell zu Bearbeiten, die Tabellen, weil der Bericht muss automatisch generieren.
UPDATE:
@agstudy: ich bin neu bei latex, aber ich denke, dies ist der Ausgang, ich bin auf der Suche zu produzieren, die automatisch mit xtable (oder so ähnlich xtable):
\begin{tabular}{lrrrrr}
\toprule
& \multicolumn{2}{c}{Treatment} & \multicolumn{2}{c}{Control} & \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
Variable & Mean & Std Dev & Mean & Std Dev & Difference \\
\midrule
var1 & 1 & 2 & 3 & 4 & 5 \\
\bottomrule
\end{tabular}
UPDATE 2:
@Jonathan: es hat mich ein paar mal gelesen um zu verstehen, was Sie waren, was darauf hindeutet. Ich nahm Ihre Empfehlung und es hat funktioniert.
Im R markdown-chunk-ich verwende jetzt:
tbl <- xtable(data)
print(tbl,
only.contents=TRUE,
include.rownames=FALSE,
type="latex",
digits(tbl) <- c(0,1,1,1,1,1),
file="output/tblout.tex")
Dann in den text, den ich verwenden:
\begin{tabular}{lddddd}
\toprule
& \multicolumn{2}{c}{Treatment} & \multicolumn{2}{c}{Control} & \\
\cmidrule(lr){2-3} \cmidrule(lr){4-5}
Variable & \multicolumn{1}{r}{Mean} & \multicolumn{1}{r}{Std Dev} & \multicolumn{1}{r}{Mean} & \multicolumn{1}{r}{Std Dev} & \multicolumn{1}{r}{Difference} \\
\midrule
\input{../output/tblout}
\bottomrule
\end{tabular}
Werde ich sehen, ob jemand irgendwelche anderen Vorschläge für einen einheitlichen xtable (oder anderes Paket) Lösung. Ansonsten, ich akzeptiere Ihre Antwort. Danke!
InformationsquelleAutor der Frage Eric Green | 2012-12-21
Du musst angemeldet sein, um einen Kommentar abzugeben.
Vorausgesetzt, die form des Tisches ist die gleiche über läuft (d.h., nur die zahlen ändern), mein Vorschlag wäre, die Nutzung
only.contents
argumentprint.xtable
und den code des multi-column-Header von hand. Zu den besten meines Wissensxtable
nicht in der Lage ist multi-column-Zellen selbst.InformationsquelleAutor der Antwort Jonathan Christensen
Ich denke, die
add.to.row
option in xtable gelingt dies perfekt.Beispiel-code hier:
InformationsquelleAutor der Antwort AdamO
Erwägen Sie die Verwendung der Tabellen Paket.
InformationsquelleAutor der Antwort MYaseen208
Dies ist ein Kinderspiel mit der
kableExtra
- Paket.InformationsquelleAutor der Antwort Stéphane Laurent
Normalerweise mache ich so etwas wie dieses:
Achten Sie auf die vielen
\\\\
benötigt. Backslashes sind verloren in dersub
undpaste
Befehle.InformationsquelleAutor der Antwort dmontaner
Ein wenig spät, um das Spiel hier ist meine Antwort, die ähnlich wie ashkan, aber mehr allgemein und können für verschiedene Parameter.
Zunächst, warum Sie eine neue Antwort? Nun, ich brauchte eine Ausgabe ohne eine table-Umgebung (möchte ich schreiben, dass meine Beschriftungen etc in meinem tex-Dokument nicht in mein r-code), die
kableExtra
scheint nicht zu bieten (korrigiert mich, wenn ich falsch Liege).Aber ich wollte auch die Flexibilität der Eingänge (d.h., mit und ohne Linie, verschiedene Spannweiten, etc).
Das Ergebnis ist eine Funktion
construct_header()
dass Konstrukte, die den header für uns.Zuerst ein kurzes Beispiel:
Beachten Sie, dass wir angeben müssen
hline.after = FALSE
(wichtig für mich, aber hier weggelassen ist, die Möglichkeit zu gebenfloating = FALSE
).Die Ergebnisse in dieser Tabelle:
Können Sie festlegen, dass das auslassen der Zeilen
construct_header(..., draw_line = FALSE)
richten Sie die Gruppen ein, und Sie erstrecken sich in unterschiedlicher Weise, d.h.,die Ergebnisse in diesem:
Den code für die Funktion ist diese:
InformationsquelleAutor der Antwort David