Я пытаюсь перенести все свои данные в Rmarkdown вместо SPSS + Excel, но не могу понять, как создать таблицу с добавленным графиком.
В Excel это можно сделать с помощью функции Sparklines или, как я это делаю, просто создать график и разместить его очень точно.
Таблица выше создана с табличной функцией из пакета Tables (и Pander). И вставлен в Excel для создания графика (и заголовка для графа).
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
Кто-нибудь создал что-то подобное? Возможно, обходной путь с пакетом gridExtra, хотя я скептически отношусь к тому, что пакет может сопоставлять таблицу и график.
Изменить - Мое решение пока. HTML закончен. На полпути с помощью pdf. Для документа я не думаю, что это возможно (скопируйте в Excel).
Таблица HTML
Во-первых, так что R знает, обрабатываю ли я html, pdf или doc. out_type принимает значения: "html", "pdf" и "docx". Я могу использовать этот объект в операторах if.
out_type <- knitr::opts_knit$get("rmarkdown.pandoc.to")
Теперь строки:
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.
}
Также возможно иметь два столбца.
Здесь снова у меня есть таблица с пропорциями, у меня есть два объекта, которые имеют пропорции мужчин и женщин.
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>")
Конечно, вы можете также иметь номера внутри баров, если хотите, но это проблема, когда бары маленькие.
PDF
Я не дошел до формата pdf. Вот мое решение:
\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}
Это не выглядит так хорошо. Я очень новичок в латексе. Мне все еще нужно выяснить, как разместить номера за решеткой. И как включить это в оператор if в моей функции. Если HTML тогда: if pdf, то...
Надеюсь, это поможет кому-то. Но, пожалуйста, рассмотрите пакеты, упомянутые в этой теме. Они превосходны, мое решение очень основано на них. Я просто не мог получить то, что искал с пакетами, поэтому сделал это вручную.