Изменить порядок разделов в r markdown pdf на основе оценки

У меня есть два таких фрейма данных, полных информации о кандидатах на работу:

Scores<-structure(list(Name = c("John Smith", "Jane Doe", 
"John Doe", "Jan Jenkins", "Lauren John", "Jennifer Patty", 
"Zachary Gala"), `Applicant Name` = c(1, 18, 5, 6, 3, 4, 2), 
    `Sum-100` = c(75, 85, 97, 53, 61, 31, 85), `Edu.-20` = c(12, 
    19, 20, 10, 14, 8, 18), `Personality-15` = c(10, 14, 15, 
    8, 8, 7, 12), `Verbal-15` = c(12, 12, 14, 7, 6, 6, 13), `Maturity-15` = c(14, 
    11, 15, 8, 8, 5, 13), `Research-15` = c(13, 10, 14, 10, 13, 
    4, 14), `Intellect-15` = c(16, 19, 19, 10, 11, 1, 15), `LOR-10` = c(NaN, 
    9, 3, 8, 6, 4, NaN), `PS-10` = c(NaN, 8, 3, 8, 5, 4, NaN)), row.names = c(NA, 
-7L), groups = structure(list(Name = c("John Smith", "Jane Doe", 
"John Doe", "Jan Jenkins", "Jennifer Patty", "Jennifer Patty", 
"Zachary Gala"), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L, 
    7L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", 
"list"))), row.names = c(NA, 7L), class = c("tbl_df", "tbl", 
"data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df", 
"tbl", "data.frame"))

Comments<-structure(list(`Applicant Name` = c(1, 1, 2, 2, 3, 2, 2, 3, 3, 
4, 5, 6, 3, 3, 1, 1, 18), Name = c("John Smith", "John Smith", 
"Zachary Gala", "Zachary Gala", "Lauren John", "Zachary Gala", 
"Zachary Gala", "Lauren John", "Lauren John", 
"Jennifer Patty", "John Doe", "Jan Jenkins", "Lauren John", 
"Lauren John", "John Smith", "John Smith", 
"Jane Doe"), Overall = c("overall good  and bla bla bla this is a very long comment because I want to see how it works etc. etc. bla", 
"cant do it", "breathtaking", "fdwdf wfew", "joke was funny", 
"Interesting person", "asdfd asdasf dasjlfoeiwna osdnkdasjbfiabdk hfhajh dsfklhdsakl hfawei uhdk jashfiaw ulhfk jldbkla hbvliub", 
"Dumb", "sfdgsv", "do not take this person", "incredible opportunity for us", 
"medium plus", "bla", "goao", "dfg", "ffohfosfdosfdifof", "Silly"
)), row.names = c(NA, -17L), class = c("tbl_df", "tbl", "data.frame"
))

И я собираю все эти данные и показываю графики и таблицы в формате pdf, который я, вероятно, распечатаю и физически передам группе людей, которые будут рассматривать кандидатов. О каждом кандидате есть раздел, который выглядит так:

И только что один из рецензентов спросил меня, могу ли я реорганизовать документ так, чтобы соискатели с более высокими баллами располагали свои разделы в верхней части документа. Есть ли способ сделать это с помощью кода? Стоит отметить, что на самом деле у меня еще нет их оценок и данных (они будут получены из базы данных Redcap в последнюю секунду), поэтому в идеале, когда я получу необработанные данные, я мог бы запрограммировать их для автоматического перемещения всего вокруг. Чтобы физически реорганизовать, где их раздел находится в pdf. Я могу представить какой-то фильтр в этом коде:

kable(School%>%filter(applicant_name= = "2")%>%select(-applicant_name))%>%
  kable_paper("hover", full_width = F)

Это отфильтровало бы человека со «вторым лучшим» результатом или что-то в этом роде, но как я могу реорганизовать, какая фотография какого кандидата куда пошла? А какое название шло в шапке раздела? Это вообще возможно?

Не могли бы вы просто переписать свой код, чтобы создавать отдельные PDF-файлы для каждого приложения, а затем выгружать их в список (возможно, по имени или коду). Затем вы можете использовать любой атрибут, связанный с этим кодом, чтобы собрать отдельные страницы PDF в один документ.

Mario Niepel 14.12.2020 13:11
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
1
248
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Вы можете сначала упорядочить табличку по интересующему счету, а затем сгенерировать динамические разделы, используя \section{} (LaTeX) в цикле.

Что-то в этом роде могло бы выполнить это, предполагая, что kableExtra-таблицы обрабатываются так же, как knitr::kable

---
output: pdf_document
---


```{r, results='asis', echo=FALSE, message=FALSE, warning=FALSE}
library(dplyr)
library(knitr)
library(kableExtra)

Scores<-structure(list(Name = c("John Smith", "Jane Doe", 
"John Doe", "Jan Jenkins", "Lauren John", "Jennifer Patty", 
"Zachary Gala"), `Applicant Name` = c(1, 18, 5, 6, 3, 4, 2), 
    `Sum-100` = c(75, 85, 97, 53, 61, 31, 85), `Edu.-20` = c(12, 
    19, 20, 10, 14, 8, 18), `Personality-15` = c(10, 14, 15, 
    8, 8, 7, 12), `Verbal-15` = c(12, 12, 14, 7, 6, 6, 13), `Maturity-15` = c(14, 
    11, 15, 8, 8, 5, 13), `Research-15` = c(13, 10, 14, 10, 13, 
    4, 14), `Intellect-15` = c(16, 19, 19, 10, 11, 1, 15), `LOR-10` = c(NaN, 
    9, 3, 8, 6, 4, NaN), `PS-10` = c(NaN, 8, 3, 8, 5, 4, NaN)), row.names = c(NA, 
-7L), groups = structure(list(Name = c("John Smith", "Jane Doe", 
"John Doe", "Jan Jenkins", "Jennifer Patty", "Jennifer Patty", 
"Zachary Gala"), .rows = structure(list(1L, 2L, 3L, 4L, 5L, 6L, 
    7L), ptype = integer(0), class = c("vctrs_list_of", "vctrs_vctr", 
"list"))), row.names = c(NA, 7L), class = c("tbl_df", "tbl", 
"data.frame"), .drop = TRUE), class = c("grouped_df", "tbl_df", 
"tbl", "data.frame"))
```

```{r, results='asis', echo=FALSE}
#Arrange tibble by the Sum-100 column in descending order.
arrangedScores <- Scores %>% 
  arrange(desc(`Sum-100`))

#Extract the names in descending order to iterate through in the for loop
arrangedNames <- arrangedScores$Name

#Uncomment to include images
#arrangedScores$img <- "example_image.png"

for(i in arrangedNames){
  tableFrame <- arrangedScores %>% 
    dplyr::filter(Name == i)
  
  #Create section header with name and score
  cat(paste0("\\section{",i, ". Score: ",tableFrame$`Sum-100` ),"}")
  
  #Uncomment to include images
  #cat("![](",tableFrame$img,")")
  
  #Print table. Need print() to print kable in loop, ref
  #https://bookdown.org/yihui/rmarkdown-cookbook/kable.html#generate-multiple-tables-from-a-for-loop
  print(kable(tableFrame))
  
  #Remove this to not generate new page for each application
  cat("\\newpage")
  
}
```

Другие вопросы по теме