1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- # -*- mode: org; org-confirm-babel-evaluate: nil; -*-
- # Construir tabelas de selecionados por disciplinas: para cada matéria no dia especificado, ordena e lista os acadêmicos.
- # Copyright (c) 2018 Adonay Felipe Nogueira <https://libreplanet.org/wiki/User:Adfeno>
- # This program is free software: you can redistribute it and/or modify
- # it under the terms of the GNU General Public License as published by
- # the Free Software Foundation, version 3 of the License.
- # This program is distributed in the hope that it will be useful, but
- # WITHOUT ANY WARRANTY; without even the implied warranty of
- # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
- # General Public License for more details.
- # You should have received a copy of the GNU General Public License
- # along with this program. If not, see
- # <https://www.gnu.org/licenses/>.
- # Comentário:
- # Para editar este documento não é necessário ferramenta especial.
- # Porém, para exportá-lo, é necessário um conversor que entenda
- # marcações em modo Org, como é o caso do editor de textos GNU Emacs.
- # Além disso, para a exportação, assume-se que se pretende fazer um
- # .txt e que sua cópia do GNU Emacs reconhece a existência de uma
- # cópia do GNU R através do modo ESS, do modo Org (org-mode), e dos
- # pacotes Org Babel (ob), Org Babel Emacs Lisp (ob-emacs-lisp), Org
- # Babel R (ob-R), todos os quais são componentes padrão no GNU Emacs,
- # exceto o GNU R. Consulte a documentação do Org Babel para
- # saber como habilitar a interpretação da linguagem R no GNU Emacs.
- #+LANGUAGE: pt-BR
- # Retira informações para economizar espaço.
- #+OPTIONS: author:nil date:nil title:nil toc:nil
- # Lê o arquivo contendo a lista de acadêmicos sorteados. Mantém a
- # sessão do GNU R aberta.
- #+BEGIN_SRC R :exports none :session
- academicos <- read.csv("Academicos.csv",
- check.names = FALSE,
- na.strings = "")
- #+END_SRC
- # Retorna as disciplinas do dia informado, ou do atual, às quais os
- # acadêmicos sorteados estão frequentando. Usa-se da sessão já aberta.
- #+NAME: disciplinas
- #+BEGIN_SRC R :exports none :results list :session :var dia=""
- if(! isTRUE(which(dia == c("segunda", "terça", "quarta", "quinta", "sexta")) > 0)) {
- dia <- weekdays(as.Date(Sys.Date()))}
- levels(factor(academicos[! is.na(academicos$"Situação na pesquisa") & academicos$"Situação na pesquisa" == "Selecionado",
- dia]))
- #+END_SRC
- # Para cada disciplina, escreve um "invocador" responsável por usar a
- # sessão do GNU R já aberta e retornar uma tabela com o nome dos
- # acadêmicos que frequentam cada disciplina.
- #+NAME: preparar-tabelas
- #+BEGIN_SRC emacs-lisp :exports results :results raw :var disciplinas=disciplinas
- (mapconcat (lambda (x)
- (concat "#+NAME: tabela-"
- (replace-regexp-in-string "[^[:alnum:]]" "-" x)
- "\n"
- "#+BEGIN_SRC R :colnames yes :exports results :session\n"
- "tabela <- data.frame(unique(sort(academicos[eval(parse(text=paste('! is.na(academicos$\"Situação na pesquisa\") & academicos$\"Situação na pesquisa\" == \"Selecionado\" & ! is.na(academicos$\"', dia, '\") & academicos$\"', dia, '\" == \""
- x
- "\"', sep=\"\"))), \"Nome\"])))\n"
- "colnames(tabela) <- c(\""
- x
- "\")\n"
- "tabela\n"
- "#+END_SRC\n\n"
- "#+RESULTS: tabela-"
- (replace-regexp-in-string "[^[:alnum:]]" "-" x)))
- (mapcar 'car disciplinas)
- "\n\n")
- #+END_SRC
|