Sto provando a spostare tutti i miei dati scricchiolanti su Rmarkdown, anziché su SPSS + Excel, ma non riesco a capire come creare una tabella con un grafico accluso.Aggiungi grafico sparkline a una tabella
In Excel questo può essere fatto con sparkline dispongono o, come lo faccio, semplicemente creando un grafico e posizionandola molto accurato.
La tabella precedente viene creata con la funzione tabulare dal pacchetto Tabelle (e Pander). E incollato in Excel per creare il grafico (e l'intestazione per il grafico).
library(tables)
library(pander)
pander(#convert table to rmarkdown table
tabular(
(Species + 1) ~ (n=1) + Format(digits=2) *
(Sepal.Length + Sepal.Width) * (mean + sd),
data = iris),
caption = "Table 1. Iris") #Heading for table
Qualcuno ha creato qualcosa di simile? Forse una soluzione alternativa al pacchetto gridExtra, anche se sono scettico sul fatto che il pacchetto possa corrispondere a tabella e grafico.
Modifica - La mia soluzione finora.
L'HTML è finito. A metà strada con il pdf. Per doc, non penso sia possibile (copia incolla in Excel).
tabella HTML
In primo luogo, in modo da R sa se sto rendering di un html, pdf o doc. out_type prende i valori: "html", "pdf" e "docx". Posso usare questo oggetto in istruzioni if.
out_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")
Ora i bar:
if(out_type == "html"){ #if output is html then:
my_table$Mean_Sepal_Length <- paste0(#I have a table saved as a dataframe. I add a column to it called Mean_Sepal_Length
"<span style=' width: 100%; display: flex;'><span style='display: inline-block; border-radius: 3px; padding-right: 0; background-color: #00457C; width:", #create the bar
MEAN_SEPAL_L_OBJECT, #set the with of the bar. I have an object with these proportions
"%; margin-right: 5px;'> </span><span>", MEAN_SEPAL_L_VARIABLE, "%</span></span>") #finally add the value behind the bar.
}
E 'anche possibile avere due colonne.
Anche qui ho una tabella con le proporzioni, ho due oggetti che hanno le proporzioni di maschi e femmine.
my_table$male_female <- paste0(
"<span style=' width: 100%; display: flex;'><span>", MALE_BAR, #the proportion of males
"%</span><span style='display: inline-block;border-top-left-radius: 3px; border-bottom-left-radius:3px; padding: 0; background-color: #00457C; width:", MALE_BAR, #width of the bar for males
"%; margin-left: 5px;'></span><span style='display: inline-block; border-top-right-radius: 3px; border-bottom-right-radius:3px; padding:0; background-color: #AC1A2F; width:",
FEMALE_BAR, #width of bar for females
"%;margin-right: 5px;'></span><span>", FEMALE_BAR, #proportion of females
"%</span></span>")
Naturalmente si può anche avere i numeri all'interno delle barre, se lo si desidera, ma è un problema quando le barre sono piccoli.
PDF
non ho ottenuto quanto con il pdf. Qui è la mia soluzione finora:
\begin{tabular}{>{$\rhd$ }lrl}
Loop at line 151 in divergence & \mybar{3.420}\\
Loop at line 1071 in radiation & \mybar{3.270}\\
scalar face value & \mybar{3.090}\\
Loop at line 102 in get & \mybar{1.700}\\
get sensible enthalpy & \mybar{1.250}\\
\end{tabular}
Non sembra buono. Sono molto nuovo al lattice. Devo ancora scoprire come posizionare i numeri dietro le barre. E come metterlo in una dichiarazione if nella mia funzione. Se HTML allora: se pdf allora ...
Spero che questo aiuti qualcuno. Ma per favore, considera i pacchetti menzionati in questa discussione. Sono eccellenti, la mia soluzione si basa molto su di loro. Non sono riuscito a ottenere esattamente quello che stavo cercando con i pacchetti, quindi l'ho fatto manualmente.
Vedi https://github.com/htmlwidgets/sparkline – zx8754
Questo è un pacchetto molto cool/widget di. Come si farebbe ad aggiungerlo a una tabella in rmarkdown, senza disegnare la tabella: in un testo come mostrato nella pagina. Ad esempio questo non funziona: 'Pander ( ddply (iris, "specie", sintetizzare, N = lunghezza (Sepal.Length), Media = medio (Sepal.Length, na.rm = T), Sd = sd (Sepal.Length, na.rm = T), spark = sparkline (Mean)) ) ' –