Do Lattes para o PPG - *DoLa*"

knitr::opts_chunk$set(eval = TRUE, echo = FALSE, message = FALSE, comment = NA, results = 'asis', warnings = FALSE)
###----------------------------------------------- Carregamento dos dados do PPG
ano_ini <- ano_ini 
ano_fim <- ano_fim
nome_instituicao <- nome_instituicao
nome_ppg <- nome_ppg
nome_area <- nome_area
xlsx_qualis <- xlsx_qualis
xlsx_qualis_livros <- xlsx_qualis_livros
###-------------------------------------------------- Preparação para as Análises

### formatação de letras minusculas e remocao de acentuacao
nome_instituicao <- str_to_lower(encode_xml2(nome_instituicao))
nome_ppg <- str_to_lower(encode_xml2(nome_ppg))
nome_area <- str_to_lower(encode_xml2(nome_area))

# Qualis Periódicos
qualis_periodicos <- read.xlsx(xlsx_qualis)
names(qualis_periodicos) <- c("ISSN", "Titulo", "Area", "Estrato")
qualis_periodicos$ISSN <- sub("-", "", qualis_periodicos$ISSN)
qualis_periodicos$Titulo <- str_trim(str_to_lower(encode_xml2(qualis_periodicos$Titulo)))
qualis_periodicos$Area <- str_trim(str_to_lower(encode_xml2(qualis_periodicos$Area)))

# Qualis Livros (arquivo facultativo)
if(is.null(xlsx_qualis_livros) != T) {
  qualis_livros <- read.xlsx(xlsx_qualis_livros)
  names(qualis_livros) <- c("Titulo", "ISBN", "Estrato")
  qualis_livros$ISBN <- str_trim(qualis_livros$ISBN)
  qualis_livros$Estrato <- str_trim(qualis_livros$Estrato)
}
if(is.null(xlsx_qualis_livros) == T) {
  qualis_livros<- NULL
}

###--------------------------------------------------- ARQUIVO CITAÇÃO DISCENTES
id.dis <- list.files(cv_discentes, full.names = T, recursive = T)
  id.discente<-NULL
  nome.discente<-NULL
  nome.citacao<-NULL  

  for(i in 1:length(id.dis)){
  url_cv <- unzip(id.dis[i])
  url_cv <-substring(url_cv,3)
  f <- readLines(url_cv, encoding="latin1")
  f <- encode_xml2(f)
  writeLines(f, url_cv)
  f <- NULL
  data <- xmlParse(url_cv)
  xml_data <- xmlToList(data)

    # identificador do Lattes
    id.discente <- c(id.discente, as.vector(xml_data$.attrs["NUMERO-IDENTIFICADOR"]))
    # nome completo do discente
    nome.discente <- c(nome.discente, encode_xml2(xml_data$"DADOS-GERAIS"$.attrs["NOME-COMPLETO"]))
    # nome de citação do discente
    nome.citacao <- c(nome.citacao,encode_xml2(xml_data$"DADOS-GERAIS"$.attrs["NOME-EM-CITACOES-BIBLIOGRAFICAS"]))
    file.remove(url_cv)
    }
  nome.citacao<-strsplit(nome.citacao,";")
  nome.citacao<-unlist(nome.citacao)
  # arquivo com id, nome completo e nome em citacoes dos discentes
  dic_id_cit<-c(id.discente, nome.discente, nome.citacao)

  ###----------------------------------------------------- ARQUIVO CITAÇÃO DOCENTES
 id.doc <- list.files(cv_docentes, full.names = T, recursive = T)
  id.docente<-NULL
  nome.docente<-NULL
  doc.citacao<-NULL

    for(i in 1:length(id.doc)){
      # leitura do lattes
  url_cv <- unzip(id.doc[i])
  url_cv <-substring(url_cv,3)
  f <- readLines(url_cv, encoding="latin1")
  f <- encode_xml2(f)
  writeLines(f, url_cv)
  f <- NULL
  data <- xmlParse(url_cv)
  xml_data <- xmlToList(data)

    # identificador do Lattes
    id.docente <- c(id.docente, as.vector(xml_data$.attrs["NUMERO-IDENTIFICADOR"]))
    # nome completo do discente
    nome.docente <- c(nome.docente, encode_xml2(xml_data$"DADOS-GERAIS"$.attrs["NOME-COMPLETO"]))
    # nome de citação do discente
    doc.citacao <- c(doc.citacao,encode_xml2(xml_data$"DADOS-GERAIS"$.attrs["NOME-EM-CITACOES-BIBLIOGRAFICAS"]))
    file.remove(url_cv)
    } 
  doc.citacao<-strsplit(doc.citacao,";")
  doc.citacao<-unlist(doc.citacao)
  # arquivo com id, nome completo e nome em citacoes dos discentes
  doc_id_cit<-c(id.docente, nome.docente, doc.citacao)

###----------------------------------------------- Tabela para armazenar os dados
clattes <- data.frame(id      = rep("", length(id.doc)),
                      nome    = rep("", length(id.doc)),
                      data    = rep("", length(id.doc)),
                      art     = rep(0, length(id.doc)),
                      liv     = rep(0, length(id.doc)),
                      pev     = rep(0, length(id.doc)),
                      tec     = rep(0, length(id.doc)),
                      ori     = rep(0, length(id.doc)),
                      ban     = rep(0, length(id.doc)),
                      pro     = rep(0, length(id.doc)),
                      ctc     = rep(0, length(id.doc)),
                      dis     = rep(0, length(id.doc)),
                      int     = rep(0, length(id.doc)),
#                      pdc     = rep(0, length(id.doc)),
#                      pve     = rep(0, length(id.doc)),
                      prm     = rep(0, length(id.doc)),
                      linhasp = rep("", length(id.doc)),
                      stringsAsFactors = FALSE)
###------------------------------------------------ EXTRAÇÃO DOS DADOS DO LATTES

producao_artigos<-producao_livros<-producao_tecnica<-producao_orientacoes<- NULL
producao_bancas<-producao_projetos<-producao_coltec<-producao_disciplinas <- NULL
producao_posdoc<-producao_pvecd<-producao_premio<-producao_associada<-producao_tanais<- NULL

# loop para cada Lattes
for(cl in 1:length(id.doc)){
# leitura do lattes
  url_cv <- unzip(id.doc[cl])
  url_cv <-substring(url_cv,3)
  f <- readLines(url_cv, encoding="latin1")
  f <- encode_xml2(f)
  writeLines(f, url_cv)
  f <- NULL
  data <- xmlParse(url_cv)
  xml_data <- xmlToList(data)

  ###----------------------------------------------------------------- id Lattes
  id <- as.vector(xml_data$.attrs["NUMERO-IDENTIFICADOR"])
  clattes[cl, "id"] <- id

  ###---------------------------------------------------------------------- nome
  nome <- encode_xml2(xml_data$"DADOS-GERAIS"$.attrs["NOME-COMPLETO"])
  clattes[cl, "nome"] <- nome

  # arquivo com id, nome completo e nome em citacoes deste docente
  citacao <- encode_xml2(xml_data$"DADOS-GERAIS"$.attrs["NOME-EM-CITACOES-BIBLIOGRAFICAS"])
  citacao<-strsplit(citacao,";")
  citacao<-unlist(citacao)
  este_doc_id_cit<-c(id, nome, citacao)

  ###------------------------------------------- data da A ATUALIZAÇÃO do Lattes
  clattes[cl, "data"] = paste0(
                str_sub(xml_data$.attrs["DATA-ATUALIZACAO"], 1, 2), "/",
                str_sub(xml_data$.attrs["DATA-ATUALIZACAO"], 3, 4), "/",
                str_sub(xml_data$.attrs["DATA-ATUALIZACAO"], 5, 8)
  )

  ###-------------------------------------------------------- LINHAS DE PESQUISA
  clattes[cl, "linhasp"] <- linhas_pesquisa(xml_data, nome_instituicao)

  ###------------------------------------------------------------------- ARTIGOS
  producao_artigos <- rbind(producao_artigos, artigos(id, xml_data, dic_id_cit, qualis_periodicos, nome_area, encode_xml2, ano_ini, ano_fim))
  clattes[cl, "art"] <- producao_artigos[producao_artigos$id == id & producao_artigos$equipe == "TOTAL", "pontos"]

  ###-------------------------------------------------------- LIVROS e CAPÍTULOS
  producao_livros <- rbind(producao_livros, livros(id, xml_data, qualis_livros, ano_ini, ano_fim, dic_id_cit, encode_xml2))
  clattes[cl, "liv"] <- producao_livros[producao_livros$id == id & producao_livros$equipe == "TOTAL", "pontos"]

  ###----------------------------------------------------------------------- PTT
  producao_tecnica <- rbind(producao_tecnica,
                            tecnica(id, xml_data, qualis_periodicos, nome_area, ano_ini, ano_fim))
  clattes[cl, "tec"] <- producao_tecnica[producao_tecnica$id == id & producao_tecnica$estrato == "TOTAL", "pontos"] 

  ###--------------------------------------------------------------- ORIENTAÇÕES
  producao_orientacoes <- rbind(producao_orientacoes,
                              orientacao(id, xml_data, nome_instituicao, nome_ppg, ano_ini, ano_fim))
  clattes[cl, "ori"] <- producao_orientacoes[producao_orientacoes$id == id & producao_orientacoes$instituicao == "TOTAL", "pontos"]

  ###-------------------------------------------------------------------- BANCAS
  producao_bancas <- rbind(producao_bancas,
                              banca(id, xml_data, nome_instituicao, nome_ppg, ano_ini, ano_fim))
  clattes[cl, "ban"] <- producao_bancas[producao_bancas$id == id & producao_bancas$instituicao == "TOTAL", "pontos"]

  ###------------------------------------------------------------------ PROJETOS
  producao_projetos <- rbind(producao_projetos,
                              projeto(id, xml_data, ano_ini, ano_fim))
  clattes[cl, "pro"] <- producao_projetos[producao_projetos$id == id & producao_projetos$financiador == "TOTAL", "pontos"]

  ###------------------------------------------------------- COLABORAÇÃO TÉCNICA
  producao_coltec <- rbind(producao_coltec,
                              coltec(id, xml_data, qualis_periodicos, nome_area, ano_ini, ano_fim))
  clattes[cl, "ctc"] <- producao_coltec[producao_coltec$id == id & producao_coltec$instituicao == "TOTAL", "pontos"]

  ###--------------------------------------------------------------- DISCIPLINAS
  producao_disciplinas <- rbind(producao_disciplinas,
                          disciplina(id, xml_data, nome_instituicao, nome_ppg, ano_ini, ano_fim))
  clattes[cl, "dis"] <- producao_disciplinas[producao_disciplinas$id == id & producao_disciplinas$curso == "TOTAL", "pontos"]

  ###--------------------------------------------------- INTERCAMBIO
  ###--------- POSDOC e LIVRE DOCENCIA
  producao_posdoc <- rbind(producao_posdoc, 
                           posdoc(id, xml_data, ano_ini, ano_fim))
  #clattes[cl, "pdc"] <- producao_posdoc[producao_posdoc$id == id & producao_posdoc$instituicao == "TOTAL", "pontos"]

  ###--------- PROF VISITANTE E ESTAGIO DE CURTA DURACAO
  producao_pvecd <- rbind(producao_pvecd, 
                          pvecd(id, xml_data, ano_ini, ano_fim))
 #clattes[cl, "pve"] <- producao_pvecd[producao_pvecd$id == id & producao_pvecd$vinculo == "TOTAL", "pontos"]

 clattes[cl, "int"] <- producao_posdoc[producao_posdoc$id == id & producao_posdoc$instituicao == "TOTAL", "pontos"] 
                        +
                       producao_pvecd[producao_pvecd$id == id & producao_pvecd$vinculo == "TOTAL", "pontos"]
  ###-------------------------------------------------------------------- PREMIO
  producao_premio <- rbind(producao_premio, 
                           premio(id, xml_data, ano_ini, ano_fim))
  clattes[cl, "prm"] <- producao_premio[producao_premio$id == id & producao_premio$titulo == "TOTAL", "pontos"]

  ###------------------------------- PRODUCAO ASSOCIADA AOS PROJETOS DE PESQUISA
  producao_associada <- rbind(producao_associada, 
                              prodass(id, xml_data, este_doc_id_cit, doc_id_cit, dic_id_cit, ano_ini, ano_fim))

  ###------------------------------------------------------- PRODUCAO EM EVENTOS
  producao_tanais <- rbind(producao_tanais, 
                              trab_anais(id, xml_data, dic_id_cit, ano_ini, ano_fim))
   clattes[cl, "pev"] <- producao_tanais[producao_tanais$id == id & producao_tanais$equipe == "TOTAL", "pontos"]

file.remove(url_cv)
}

  # retirar número das linhas do dataframe
  row.names(producao_artigos)<-row.names(producao_livros)<-row.names(producao_tecnica)<-row.names(producao_orientacoes)<-row.names(producao_bancas)<-row.names(producao_projetos)<-row.names(producao_coltec)<-row.names(producao_disciplinas)<-row.names(producao_posdoc)<-row.names(producao_pvecd)<-row.names(producao_premio)<-row.names(producao_associada)<-row.names(producao_tanais)<- NULL

clattes <- clattes %>% arrange(nome)
# Exclui a coluna das linhas de pesquisa (ainda não usada)
df_lattes <- clattes[,c(1:14)] 
###------------------------------------------------------------------- RELATORIO
###------------------------------------------------------ cabecalho do Relatorio
#cat(paste0("#### Instituição: ", "Universidade Federal Pública e Gratuita"))
cat(paste0("#### Instituição: ", nome_instituicao[1]))
cat("\n\n\n")
cat(paste0("#### PPG: ", nome_ppg[1]))
#cat(paste0("#### PPG: ", "Programa de Pós-graduação Para Todos"))
cat("\n\n\n")
cat(paste0("#### Área: ", nome_area[1]))
#cat(paste0("#### Área: ", "A Que Elas Quiserem"))
cat("\n\n\n")
cat("\n\n\n")


###--------------------------------------------------------- RESUMO DA PRODUÇÃO
cat("### RESUMO DA PRODUÇÃO DOCENTE")
cat("\n\n\n")


n_docentes <- nrow(clattes)
###----------------------------------------------- DOCENTES - Produções por Tipo
# inclui linha para o somatório por tipo
  df <- rbind(df_lattes, c("","","", colSums(df_lattes[ , 4:ncol(df_lattes)]))) 
  df[nrow(df), 1] <- "TOTAL"

#df$nome[1:(length(df$nome)-1)]<-"XXXXX"
#df$id[1:(length(df$id)-1)]<-"XXXXX"

kable(df, caption = paste0("Produção Docente por Tipo (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

cat("art Artigos,   liv Livros e Capítulos, pev Publicação em Eventos, tec PTTs, ori Orientações no PPG, ban Bancas, pro Projetos, ctc Colaborações Técnicas, dis Disciplinas, int Intercâmbio (pós-doc, prof visitante e estágio de curta duração), prm Prêmios")
cat("\n\n\n")

###----------------------------------------------------- Publicação docente geral
# Artigos
ar <- producao_artigos %>% 
  select(id, nome, equipe, estrato_, ano) %>% 
  filter(ano %in% (ano_ini:ano_fim))
names(ar)[names(ar) == 'estrato_'] <- 'tipo'

li<- producao_livros %>% 
  select(id, nome, equipe, tipo, ano) %>% 
  filter(ano %in% (ano_ini:ano_fim))

li$tipo[li$tipo == "LIVRO_ORGANIZADO_OU_EDICAO"]<- "L"
li$tipo[li$tipo == "LIVRO_PUBLICADO"]<- "L"
li$tipo[li$tipo == "Capitulo de livro publicado"]<- "CL"

# Artigos + Livros
df<-bind_rows(ar,li)
df<-arrange(df,nome)

df <- df %>% 
  group_by(id, nome, tipo) %>% 
  summarise(n = n()) %>%
  arrange(nome, as.character(tipo))
df$tipo <- as.factor(str_trim(df$tipo))
tipo <- as.character(levels(df$tipo))

if(length(tipo) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(tipo)))
  names(df2) <- c("id","nome", tipo)
  todas_pub<- c("id","nome","A1","A2","A3","A4","B1","B2","B3","B4","C", "NC", "CL", "L")
  reordenar_pub<-match(todas_pub, names(df2))
  reordenar_pub<-reordenar_pub[!is.na(reordenar_pub)]
  df2<-df2[,reordenar_pub]

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$tipo)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório por tipo
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatório por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0))) 
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. PUBLICAÇÕES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PUBLICAÇÕES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Publicação Docente por Tipo ", "(", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

cat("A1-C Qualis CAPES, NC não classificado, CL capítulo de livro, L livro")
cat("\n\n\n")

###--------------------------------------------------- inicio Tabela INDICADORES 
###----- cada indicador aparece ao final de cada item

indicadores <- data.frame(indicador = "Índice de Publicação", 
                              Total = df2[nrow(df2), ncol(df2)],
                              Docente = df2[nrow(df2), ncol(df2)]/n_docentes)
#  if("A1" %in% names(df2)){
#      indicadores <- rbind(indicadores,
#                           data.frame(indicador = "Índice de Publicação Super Qualificada (Qualis A1)",
#                                      Total = df2[nrow(df2), 2],
#                                      Docente = df2[nrow(df2), 2] / n_docentes))
#    }

###-------------------------------------------------- Publicação docente por ano
# Artigos
df.ar <- producao_artigos %>% 
  select(id, nome, equipe, estrato_, ano) %>% 
  filter(ano %in% (ano_ini:ano_fim))
names(df.ar)[names(df.ar) == 'estrato_'] <- 'tipo'

df.li<- producao_livros %>% 
  select(id, nome, equipe, tipo, ano) %>% 
  filter(ano %in% (ano_ini:ano_fim))

df.li$tipo[li$tipo == "LIVRO_ORGANIZADO_OU_EDICAO"]<- "L"
df.li$tipo[li$tipo == "LIVRO_PUBLICADO"]<- "L"
df.li$tipo[li$tipo == "Capitulo de livro publicado"]<- "CL"

# Artigos + Livros
df.arli<-bind_rows(df.ar,df.li)
df.arli<-arrange(df.arli,nome)

df <- df.arli %>% 
  group_by(id, nome, ano) %>% 
  summarise(n = n()) %>%
  arrange(nome, as.character(ano))
df$ano <- as.factor(str_trim(df$ano)) # remove espacos
ano <- as.character(levels(df$ano))

if(length(ano) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(ano)))
  names(df2) <- c("id","nome", ano)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$ano)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório por ano
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatório por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0))) 
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. PUBLICAÇÕES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PUBLICAÇÕES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Publicação Docente por Ano ", "(", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

###----------------------------------------------------- Publicacao COM discente
# Artigos
ar <- producao_artigos %>% 
  select(id, nome, equipe, estrato_, ano) %>% 
  filter(equipe == "Discente" & (ano %in% (ano_ini:ano_fim)))
names(ar)[names(ar) == 'estrato_'] <- 'tipo'

li<- producao_livros %>% 
  select(id, nome, equipe, tipo, ano) %>% 
  filter(equipe == "Discente" & (ano %in% (ano_ini:ano_fim)))

li$tipo[li$tipo == "LIVRO_ORGANIZADO_OU_EDICAO"]<- "L"
li$tipo[li$tipo == "LIVRO_PUBLICADO"]<- "L"
li$tipo[li$tipo == "Capitulo de livro publicado"]<- "CL"

# Artigos + Livros
df<-bind_rows(ar,li)
df<-arrange(df,nome)

df <- df %>% 
  group_by(id, nome, tipo) %>% 
  summarise(n = n()) %>%
  arrange(nome, as.character(tipo))
df$tipo <- as.factor(str_trim(df$tipo))
tipo <- as.character(levels(df$tipo))

if(length(tipo) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(tipo)))
  names(df2) <- c("id","nome", tipo)
  todas_pub<- c("id","nome","A1","A2","A3","A4","B1","B2","B3","B4","C", "NC", "CL", "L")
  reordenar_pub<-match(todas_pub, names(df2))
  reordenar_pub<-reordenar_pub[!is.na(reordenar_pub)]
  df2<-df2[,reordenar_pub]

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$tipo)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório por tipo
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatório por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0))) 
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. PUBLICAÇÕES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PUBLICAÇÕES", TOTAL=0))
}

###----- indicador 
indicadores <- rbind(indicadores,
                     data.frame(indicador = "Índice de Publicação com Discente", 
                              Total = df2[nrow(df2), ncol(df2)],
                              Docente = df2[nrow(df2), ncol(df2)]/n_docentes))
#  if("A1" %in% names(df2)){
#      indicadores <- rbind(indicadores,
#                           data.frame(indicador = "Índice de Publicação Super Qualificada (Qualis A1) com Discente",
#                                      Total = df2[nrow(df2), 2],
#                                      Docente = df2[nrow(df2),2] / n_docentes))
#  }


#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"

kable(df2, caption = paste0("Publicação COM DISCENTE por Tipo ", "(", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)


cat("A1-C Qualis CAPES, NC não classificado, CL capítulo de livro, L livro")
cat("\n\n\n")

###--------------------------------------------- Publicação com discente por ano
# Artigos
ar <- producao_artigos %>% 
  select(id, nome, equipe, ano) %>% 
  filter(equipe == "Discente" & (ano %in% (ano_ini:ano_fim)))

li<- producao_livros %>% 
  select(id, nome, equipe, ano) %>% 
  filter(equipe == "Discente" & (ano %in% (ano_ini:ano_fim)))

# Artigos + Livros
#df<-inner_join(ar, li)
df<-bind_rows(ar,li)
df<-arrange(df,nome)

df <- df %>% 
  group_by(id, nome, ano) %>% 
  summarise(n = n()) %>%
  arrange(nome, as.character(ano))
df$ano <- as.factor(str_trim(df$ano)) # remove espacos
ano <- as.character(levels(df$ano))

if(length(ano) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(ano)))
  names(df2) <- c("id","nome", ano)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$ano)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório por ano
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatório por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0))) 
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. PUBLICAÇÕES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PUBLICAÇÕES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Publicação COM DISCENTE por Ano ", "(", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)



###------------------------------------------------------- Publicacao em eventos
producao_tanais$natureza[producao_tanais$natureza == "completo"] <- "Trabalho Completo"
producao_tanais$natureza[producao_tanais$natureza == "resumo_expandido"] <- "Resumo Expandido"
producao_tanais$natureza[producao_tanais$natureza == "resumo"] <- "Resumo"

df <- producao_tanais %>% 
              select(id, equipe, natureza) %>% 
              filter(equipe != 'TOTAL') %>% 
              group_by(id, natureza) %>% 
              summarise(n = n())  %>% 
              arrange(id, as.character(natureza))

natureza <- as.character(levels(as.factor(as.character(df$natureza))))

# se houver alguma publicacao com estrato qualis
if(length(natureza) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(natureza)))
  names(df2) <- c("id","nome", natureza)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$natureza)] <- df[df$id == id, ]$n
  }

  # inclui coluna Total
  df2$TOTAL <- rowSums(df2[ ,3:ncol(df2)]) 

  # inclui coluna "com discente"
 ptacdis <- producao_tanais %>% 
              select(id, equipe) %>% 
              filter(equipe != 'TOTAL') %>%
              filter(equipe == "Discente") %>%
              group_by(id) %>% 
              summarise(n = n())
df2<-left_join(df2,ptacdis)
df2[is.na(df2)]<-0
names(df2)[names(df2) == "n"]<-"Com DISCENTE"

#df2[nrow(df2),ncol(df2)]<-sum(df2$n,na.rm = TRUE)
df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome e remove id

# inclui linha para o somatório
df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)])))) 
df2[nrow(df2), 1] <- "QTD. PUBLICAÇÕES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PUBLICAÇÕES", TOTAL=0))
#  df2 <- rbind(df2, data.frame(nome="PONTUAÇÃO", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Publicação em Eventos por Tipo e com DISCENTE (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Publicação em Eventos", 
                                  Total = df2$TOTAL[nrow(df2)],
                                  Docente = df2$TOTAL[nrow(df2)]/n_docentes))

indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Publicação em Eventos com Discente", 
                                  Total = df2[nrow(df2), ncol(df2)],
                                  Docente = df2[nrow(df2), ncol(df2)]/n_docentes))

###------------------------------------------------------------------------- PTT
df <- producao_tecnica %>% 
              select(id, PTT, ano) %>% 
#  filter(PTT != "--" & (ano %in% (ano_ini:ano_fim))) %>%
  filter(ano %in% (ano_ini:ano_fim)) %>%
              group_by(id, PTT) %>% 
              summarise(n = n()) %>%
              arrange(id, as.character(PTT))

PTT <- as.character(levels(as.factor(as.character(df$PTT))))

# se houver alguma producao tecnica com PTT
if(length(PTT) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(PTT)))
  names(df2) <- c("id","nome", PTT)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$PTT)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório de prod. ténica por estrato
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatorio de p. tecnica por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOT"

  df2[nrow(df2), 1] <- "QTD. PTTs"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PTTs", TOTAL=0))
}

indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Produção Técnica", 
                                  Total = df2[nrow(df2), ncol(df2)],
                                  Docente = df2[nrow(df2), ncol(df2)]/n_docentes))

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Produção Técnica ou Tecnológica por Tipo (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

cat("– Não Classificado,    ArDI Artigo de Divulgação - Internacional,  ArDN    Artigo de Divulgação - Nacional, CForD Curso de Formação - Docente, CForO   curso de Formação - Organizador, Edit   Editoria, Map   Mapas, MatDid   Material Didático, MidOr    Midia Social - Organizador, MidPa   Midia Social - Participante, OEI    Organizador de Evento Internacional, OEN    Organizador de Evento Nacional, Patent  Patente, PEPal  apresentação - Palestras, PEPos Apresetação - Painel, RelTec Relatório Técnico")


### Produção técnica POR ANO
df <- producao_tecnica %>% 
              select(id, ano) %>% 
  filter(ano %in% (ano_ini:ano_fim)) %>%
              group_by(id, ano) %>% 
              summarise(n = n()) %>%
              arrange(nome, as.character(ano))

df$ano <- as.factor(str_trim(df$ano)) # remove espacos
ano <- as.character(levels(df$ano))
#ano <- as.character(levels(as.factor(as.character(df$ano))))

if(length(ano) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(ano)))
  names(df2) <- c("id","nome", ano)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$ano)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório de prod. ténica por estrato
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatorio de p. tecnica por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOT"

  df2[nrow(df2), 1] <- "QTD. PTTs"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PTTs", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Produção Técnica ou Tecnológica por Ano (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)


####--------------------------------------------------------------- Orientações

producao_orientacoes$nivel[producao_orientacoes$nivel == "orientacao-de-outra-natureza" | producao_orientacoes$nivel == "orientacao de outra natureza"] <- "tutoria"
producao_orientacoes$nivel[producao_orientacoes$nivel == "iniciacao cientifica"] <- "ic"
producao_orientacoes$nivel[producao_orientacoes$nivel == "trabalho de conclusao de curso de graduacao"  | producao_orientacoes$nivel == "trabalho de conclusao de curso graduacao"]<- "tcc"
producao_orientacoes$nivel[producao_orientacoes$nivel == "dissertacao de mestrado"] <- "dissertacao"
producao_orientacoes$nivel[producao_orientacoes$nivel == "tese de doutorado"] <- "tese"
producao_orientacoes$nivel[producao_orientacoes$nivel == "supervisao de pos-doutorado"] <- "pos-doc"
producao_orientacoes$nivel[producao_orientacoes$nivel == "monografia de conclusao de curso aperfeicoamento e especializacao"] <- "monografia"

###---------------------------------------------------- orientacoes em andamento
df <- producao_orientacoes %>% 
  select(id, nivel, situacao, ano, instituicao, curso) %>% 
  filter(ano %in% ano_ini:ano_fim,
         nivel %in% c("monografia",'dissertacao', 'tese'), 
         situacao %in% c("andamento"), 
         instituicao %in% nome_instituicao, 
         curso %in% nome_ppg
         ) %>%
  group_by(id, nivel) %>%
  summarise(n = n()) %>%
  arrange(id, as.character(nivel))

nivel <- as.character(levels(as.factor(as.character(df$nivel))))

# se houver alguma producao no respectivo nivel
if(length(nivel) > 0){

  # se houver alguma publicacao com estrato qualis
  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(nivel)))
  names(df2) <- c("id","nome",nivel)
  todas_ori<- c("id","nome","tutoria","ic","tcc","monografia","dissertacao","tese","pos-doc")
  reordenar_ori<-match(todas_ori, names(df2))
  reordenar_ori<-reordenar_ori[!is.na(reordenar_ori)]
  df2<-df2[,reordenar_ori]

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$nivel)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

    # inclui linha para o somatório por nivel
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 
#  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)])))) 
#  df2[nrow(df2), 1] <- "QTD. ORIENTACOES"

  # inclui coluna para o somatorio do nivel por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. ORIENTACOES"
#  
} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. ORIENTACÔES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Orientações em Andamento no PPG por Curso (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

###-----
indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Orientação de Dissertação (andamento)", 
                                  Total = df2$dissertacao[nrow(df2)],
                                  Docente = df2$dissertacao[nrow(df2)]/n_docentes))

if(!is.null(df2$tese)) {
indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Orientação de Tese (andamento)", 
                                  Total = df2$tese[nrow(df2)],
                                  Docente = df2$tese[nrow(df2)]/n_docentes))
}

####------------------------------------------- Orientaçoes em andamento POR ANO
df <- producao_orientacoes %>% 
  select(id, ano, nivel, situacao, instituicao, curso) %>% 
  filter(ano %in% ano_ini:ano_fim,
         nivel %in% c("monografia",'dissertacao', 'tese'), 
         situacao %in% c("andamento"), 
         instituicao %in% nome_instituicao, 
         curso %in% nome_ppg
         ) %>%
  group_by(id, ano) %>% 
  summarise(n = n()) %>%
  arrange(nome, as.character(ano))

df$ano <- as.factor(str_trim(df$ano)) # remove espacos
ano <- as.character(levels(df$ano))

if(length(ano) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(ano)))
  names(df2) <- c("id","nome", ano)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$ano)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório de prod. ténica por estrato
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatorio de p. tecnica por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOT"

  df2[nrow(df2), 1] <- "QTD. ORIENTACÔES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. ORIENTACÕES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Orientações em Andamento no PPG por Ano (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)



###-------------------------------------------------------- Defesas - Titulacoes
df <- producao_orientacoes %>% 
  select(id, nivel, situacao, ano, instituicao, curso) %>% 
  filter(ano %in% ano_ini:ano_fim,
         nivel %in% c("monografia",'dissertacao', 'tese'), 
         situacao %in% c("concluida"), 
         instituicao %in% nome_instituicao, 
         curso %in% nome_ppg
         ) %>%
  group_by(id, nivel) %>%
  summarise(n = n()) %>%
  arrange(id, as.character(nivel))

nivel <- as.character(levels(as.factor(as.character(df$nivel))))

# se houver alguma producao no respectivo nivel
if(length(nivel) > 0){

  # se houver alguma publicacao com estrato qualis
  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(nivel)))
  names(df2) <- c("id","nome",nivel)
  todas_ori<- c("id","nome","tutoria","ic","tcc","monografia","dissertacao","tese","pos-doc")
  reordenar_ori<-match(todas_ori, names(df2))
  reordenar_ori<-reordenar_ori[!is.na(reordenar_ori)]
  df2<-df2[,reordenar_ori]

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$nivel)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

    # inclui linha para o somatório por nivel
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 
#  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)])))) 
#  df2[nrow(df2), 1] <- "QTD. ORIENTACOES"

  # inclui coluna para o somatorio do nivel por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. ORIENTACÕES"
#  
} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. ORIENTACOES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Orientações Concluídas no PPG por Curso (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Orientação de Dissertação (concluida)", 
                                  Total = df2$dissertacao[nrow(df2)],
                                  Docente = df2$dissertacao[nrow(df2)]/n_docentes))

if(!is.null(df2$tese)) {
indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Orientação de Tese (concluida)", 
                                  Total = df2$tese[nrow(df2)],
                                  Docente = df2$tese[nrow(df2)]/n_docentes))
}


###---------------------------------------------------------- Titulações POR ANO
df <- producao_orientacoes %>% 
  select(id, ano, nivel, situacao, instituicao, curso) %>% 
  filter(ano %in% ano_ini:ano_fim,
         nivel %in% c("monografia",'dissertacao', 'tese'), 
         situacao %in% c("concluida"), 
         instituicao %in% nome_instituicao, 
         curso %in% nome_ppg
         ) %>%
  group_by(id, ano) %>% 
  summarise(n = n()) %>%
  arrange(nome, as.character(ano))

df$ano <- as.factor(str_trim(df$ano)) # remove espacos
ano <- as.character(levels(df$ano))

if(length(ano) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(ano)))
  names(df2) <- c("id","nome", ano)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$ano)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório de prod. ténica por estrato
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatorio de p. tecnica por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOT"

  df2[nrow(df2), 1] <- "QTD. ORIENTACÕES"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. ORIENTAÇÂO", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Orientações Concluídas no PPG por Ano (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)


###---------------------------------------------- Todas as orientacoes por nivel
df <- producao_orientacoes %>% 
#  select(id, nivel, situacao, ano) %>% 
  select(id, nivel, ano) %>% 
  filter(ano %in% ano_ini:ano_fim) %>%
  group_by(id, nivel) %>%
  summarise(n = n()) %>%
  arrange(id, as.character(nivel))

nivel <- as.character(levels(as.factor(as.character(df$nivel))))

# se houver alguma producao no respectivo nivel
if(length(nivel) > 0){

  # se houver alguma publicacao com estrato qualis
  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(nivel)))
  names(df2) <- c("id","nome",nivel)
  todas_ori<- c("id","nome","tutoria","ic","tcc","monografia","dissertacao","tese","pos-doc")
  reordenar_ori<-match(todas_ori, names(df2))
  reordenar_ori<-reordenar_ori[!is.na(reordenar_ori)]
  df2<-df2[,reordenar_ori]

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$nivel)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

    # inclui linha para o somatório por nivel
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)],0)))) 

  # inclui coluna para o somatorio do nivel por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0)))
  names(df2)[ncol(df2)] <- "TOTAL"

  df2[nrow(df2), 1] <- "QTD. ORIENTACÕES"
#  
} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. ORIENTACÕES", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Todas as Orientações do Docente (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)


####------------------------------------------------------- Projetos de pesquisa

df <- producao_projetos %>% 
              select(id, coordenador, financiado) %>% 
              filter(coordenador != '', financiado != '') %>% 
              group_by(id, coordenador, financiado) %>% 
              summarise(n = n())

df$cf<- paste0(df$coordenador," ", df$financiado)
df$cf[df$cf == "NAO NAO"]<-"Participante sem recurso"
df$cf[df$cf == "NAO SIM"]<- "Participante com recurso"
df$cf[df$cf == "SIM NAO"]<- "Coordenador sem recurso"
df$cf[df$cf == "SIM SIM"]<- "Coordenador com recurso"

cf <- as.character(levels(as.factor(as.character(df$cf))))

# se houver alguma publicacao com estrato qualis
if(length(cf) > 0){

  df2 <- cbind(clattes[, c("id","nome")], matrix(0, nrow(clattes), length(cf)))
  names(df2) <- c("id","nome", cf)

  for(id in df2$id){ # inclui contagem na tabela cruzada
    df2[df2$id == id, as.character(df[df$id == id, ]$cf)] <- df[df$id == id, ]$n
  }

  df2 <- df2[order(df2$nome), 2:ncol(df2)] # ordena por nome

  # inclui linha para o somatório por natureza
  df2 <- rbind(df2, c(0, colSums(cbind(df2[ , 2:ncol(df2)])))) 
  df2[nrow(df2), 1] <- "QTD. PROJETOS"

  # inclui coluna para o somatório por nome
  df2 <- cbind(df2, rowSums(cbind(df2[ , 2:ncol(df2)],0))) 
  names(df2)[ncol(df2)] <- "TOTAL"

} else {
  df2 <- data.frame(nome="----------", TOTAL=0)
  df2 <- rbind(df2, data.frame(nome="QTD. PROJETOS", TOTAL=0))
}

#df2$nome[1:(length(df2$nome)-1)]<-"XXXXX"
kable(df2, caption = paste0("Projetos de Pesquisa (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)

indicadores <- rbind(indicadores,
                       data.frame(indicador = "Indicador de Projetos de Pesquisa", 
                                  Total = df2$TOTAL[nrow(df2)],
                                  Docente = df2$TOTAL[nrow(df2)]/n_docentes))

###----------------------------------------------------------------- Intercambio
df <- producao_posdoc %>% 
              select(id, instituicao) %>% 
              filter(instituicao != 'TOTAL') %>% 
              group_by(id) %>% 
              summarise(n1 = n())

df2 <- producao_pvecd %>% 
              select(id, vinculo) %>% 
              filter(vinculo != 'TOTAL') %>% 
              group_by(id) %>% 
              summarise(n2 = n())

df <- as.data.frame(full_join(df,df2))
df[is.na(df)]<-0
df$TOTAL<-as.numeric(df$n1) + as.numeric(df$n2)
df <- merge(df,clattes[, c('id','nome')])
df <- df[,c('nome', 'TOTAL')]
df <- df %>% arrange(nome)

#soma.ind<-sum(as.numeric(df$TOTAL), na.rm = TRUE) / n_docentes
ind.inter<- data.frame("Indicador de Intercambio", sum(as.numeric(df$TOTAL), na.rm = TRUE), sum(as.numeric(df$TOTAL), na.rm = TRUE) / n_docentes)
names(ind.inter)<-c("indicador","Total", "Docente")
indicadores <- rbind(indicadores,ind.inter)

df <- rbind(df, data.frame("nome" = "QTD. INTERCÂMBIOS",  "TOTAL" = sum(as.numeric(df$TOTAL), na.rm = TRUE)))

#df$nome[1:(length(df$nome)-1)]<-"XXXXX"
kable(df, caption = paste0("Intercâmbios Realizados (Pós-doc, Prof Visitante, Afastamento de Curta Duração) (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)


###--------------------------------------------------------------------- Premios
df <- producao_premio %>% 
              select(id, titulo) %>% 
              filter(titulo != 'TOTAL') %>% 
              group_by(id) %>% 
              summarise(TOTAL = n())

df <- merge(df,clattes[, c('id','nome')])
df <- df[,c('nome', 'TOTAL')]
df <- df %>% arrange(nome)

ind.inter<- data.frame("Indicador de Prêmios e distinções", sum(as.numeric(df$TOTAL),na.rm = TRUE), sum(as.numeric(df$TOTAL),na.rm = TRUE)/n_docentes)
names(ind.inter)<-c("indicador","Total", "Docente")
indicadores <- rbind(indicadores,ind.inter)

# cria a linha dos totais
df <- rbind(df, data.frame(nome = "QTD.PREMIAÇÕES",  TOTAL = sum(as.numeric(df$TOTAL))))

#df$nome[1:(length(df$nome)-1)]<-"XXXXX"
kable(df, caption = paste0("Docentes com Premiação ou Distinção (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)


###---------------------------------------------------------- INDICADORES GERAIS

cat("### INDICADORES GERAIS")
cat("\n\n\n")

#indicadores$Total <- round(indicadores$Total, 2)
indicadores$Docente <- round(indicadores$Docente, 2)
kable(indicadores, caption = paste0("Indicadores da Produção (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = FALSE)
#cat("\n\n\n")


####----------------------------------------------------------------------------
####----------------------------------------------------------------------------
####---------------------------- RELATORIO DETALHADO DA PRODUÇÃO DE CADA DOCENTE 


cat("\n\n\n")
cat("### RELATÓRIO POR DOCENTE")
cat("\n\n\n")

###------------------------------------ Destaque da Produçao (informada no Lattes)
for(i in 1:nrow(clattes)){
  # data,frame das producoes relevantes
  dprl <- data.frame(ano=NULL, tipo=NULL, titulo=NULL, observacao=NULL)

  # producao de artigos
  dfpa<-producao_artigos[producao_artigos$id == clattes[i, "id"] &
                           !(producao_artigos$flag_relevancia=="SIM" &
                             !(producao_artigos$ano %in% ano_ini:ano_fim)), 3:9]
  dfpa<-dfpa[dfpa$equipe != "TOTAL", ]
  if(!is.null(dfpa$ano)) {dfpa<-arrange(dfpa,desc(ano))}
  if(nrow(dfpa) == 0) {dfpa <- data.frame(observacao="Não há produção no período")}

  # producao relevante de artigos
  dprl_aux <- producao_artigos[producao_artigos$id == clattes[i, "id"] &
                               producao_artigos$flag_relevancia=="SIM", 
                               c("ano","titulo", "periodico","estrato_")]
  if(nrow(dprl_aux) > 0){
    dprl_aux$tipo <- "ARTIGO"
    dprl_aux$observacao <- paste0("(",dprl_aux$estrato_,") - ", dprl_aux$periodico)

    dprl <- rbind(dprl, dprl_aux[,c("ano","tipo","titulo","observacao")]) 
  }

  # producao de livros
  dfpl <- producao_livros[producao_livros$id == clattes[i, "id"] &
                           !(producao_livros$flag_relevancia=="SIM" &
                             !(producao_livros$ano %in% ano_ini:ano_fim)), 3:10]
  dfpl<-dfpl[dfpl$equipe != "TOTAL", ]
  dfpl$estrato_<-NULL
  if(!is.null(dfpl$ano)) {dfpl<-arrange(dfpl,desc(ano))}
  if(nrow(dfpl) == 0){dfpl <- data.frame(observacao="Não há produção no período")}

  # producao relevante de livros
  dprl_aux <- producao_livros[producao_livros$id == clattes[i, "id"] &
                              producao_livros$flag_relevancia=="SIM", 
                              c("ano","tipo","titulo", "editora", "estrato_")]
  if(nrow(dprl_aux) > 0){
    dprl_aux$observacao <- paste0("(",dprl_aux$estrato_,") - ", dprl_aux$editora)
    dprl <- rbind(dprl, dprl_aux[,c("ano","tipo","titulo","observacao")]) 
  }

  # producao tecnica
  dftc <- producao_tecnica[producao_tecnica$id == clattes[i, "id"] &
                           !(producao_tecnica$flag_relevancia=="SIM" &
                             !(producao_tecnica$ano %in% ano_ini:ano_fim)), c(2:4)]
  if(!is.null(dftc$tipo)) {dftc<-arrange(dftc, desc(ano), desc(tipo))}
  if(is.null(dftc$id)) {dftc <- data.frame(observacao="Não há produção no período")}

  # producao tecnica relevante
  dprl_aux <- producao_tecnica[producao_tecnica$id == clattes[i, "id"] &
                              producao_tecnica$flag_relevancia=="SIM", 
                              c("ano","tipo","titulo", "estrato_")]
  if(nrow(dprl_aux) > 0){
    names(dprl_aux)[4] <- "observacao"
    dprl <- rbind(dprl, dprl_aux[,c("ano","tipo","titulo","observacao")]) 
  }

  # producao orientacao
  dfor <- producao_orientacoes[producao_orientacoes$id == clattes[i, "id"] &
                           !(producao_orientacoes$flag_relevancia=="SIM" &
                             !(producao_orientacoes$ano %in% ano_ini:ano_fim)), 2:9] 
  dfor<-dfor[dfor$instituicao != "TOTAL", ]
  if(!is.null(dfor$ano)) {dfor<-arrange(dfor,desc(ano),nivel,desc(situacao))}
  if(nrow(dfor) == 0) {dfor <- data.frame(observacao="Não há produção no período")}

#dfor$orientando<-"XXXXX"

#  # Tabela Orientaçoes POR ANO
#dforano<-dfor[1:nrow(dfor)-1,]
#dforano <- dforano %>% 
#  select(ano, nivel,situacao) %>% 
#  group_by(ano,nivel, situacao) %>% 
#  summarise(n = n()) 
#
#if(length(unique(dforano$ano)) >1) {
#dforano<-dforano %>% dcast(nivel*situacao ~ ano)
#dforano[is.na(dforano)]<-0
#dforano$Total<-rowSums(dforano[,3:length(dforano)])
#if (nrow(dforano) > 1) dforano<- rbind(dforano, c("", "TOTAL",colSums(dforano[,3:length(dforano)]))) 
#}


# producao relevante de orientacoes
  dprl_aux <- producao_orientacoes[producao_orientacoes$id == clattes[i, "id"] &
                                   producao_orientacoes$flag_relevancia=="SIM", 
                                   c("ano","tipo","titulo", "nivel")]
  if(nrow(dprl_aux) > 0){
    names(dprl_aux)[4] <- "observacao"
    dprl <- rbind(dprl, dprl_aux[,c("ano","tipo","titulo","observacao")]) 
  }

  if(!is.null(dprl$ano)) {dprl<-arrange(dprl,desc(ano))}
  if(nrow(dprl) == 0) {dprl <- data.frame(observacao="Não há produção relevante informada")}

  # demais producoes
  dfba <- producao_bancas[producao_bancas$id == clattes[i, "id"], 2:7]
  dfba<-dfba[dfba$instituicao != "TOTAL", ]
  if(!is.null(dfba$ano)) {dfba<-arrange(dfba,desc(ano))}
  if(nrow(dfba) == 0) {dfba <- data.frame(observacao="Não há produção no período")}
#  if(!is.null(dfba$ano)) {dfba$candidato<-"XXXXX"}

  dfpr <- producao_projetos[producao_projetos$id == clattes[i, "id"], 2:7]
  dfpr<-dfpr[dfpr$financiador != "TOTAL", ]
  if(!is.null(dfpr$ano_ini)) {dfpr<-arrange(dfpr,desc(ano_ini),ano_fim)}
  if(nrow(dfpr) == 0) {dfpr <- data.frame(observacao="Não há produção no período")}

  dfct <- producao_coltec[producao_coltec$id == clattes[i, "id"], 2:5]
  dfct<-dfct[dfct$instituicao != "TOTAL", ]
  if(nrow(dfct) == 0) {dfct <- data.frame(observacao="Não há produção no período")}

  dfdi <- producao_disciplinas[producao_disciplinas$id == clattes[i, "id"], 2:9]
  dfdi<-dfdi[dfdi$curso != "TOTAL", ]
  if(!is.null(dfdi$ano_ini)) {dfdi<-arrange(dfdi,desc(ano_ini))}
  if(nrow(dfdi) == 0) {dfdi <- data.frame(observacao="Não há produção no período")}

  dfpe <- producao_premio[producao_premio$id == clattes[i, "id"], 2:4]
  dfpe<-dfpe[dfpe$titulo != "TOTAL", ]
  if(!is.null(dfpe$ano)) {dfpe<-arrange(dfpe,desc(ano))}
  if(nrow(dfpe) == 0) {dfpe <- data.frame(observacao="Não há produção no período")}

  dfpap<- producao_associada[producao_associada$id == clattes[i, "id"], 2:5]
  if(nrow(dfpap) == 0) {dfpap <- data.frame(observacao="Não há produção no período")}

  dfpev<- producao_tanais[producao_tanais$id == clattes[i, "id"], c(2:6,8)]
  dfpev<-dfpev[dfpev$equipe != "TOTAL", ]
  if(!is.null(dfpev$ano)) {dfpev<-arrange(dfpev,desc(ano))}
  if(nrow(dfpev) == 0) {dfpev <- data.frame(observacao="Não há produção no período")}

  dfpv <- producao_pvecd[producao_pvecd$id == clattes[i, "id"], 2:7]
  dfpv<-dfpv[dfpv$vinculo != "TOTAL", ]
  dfpd <- producao_posdoc[producao_posdoc$id == clattes[i, "id"], 2:5]  
  dfpd<-dfpd[dfpd$instituicao != "TOTAL", ]
  names(dfpd)[names(dfpd) == 'formacao'] <- 'vinculo'
  dfpv_dfpd<-bind_rows(dfpv,dfpd)
  dfpv_dfpd[is.na(dfpv_dfpd)]<-"-"
  if(!is.null(dfpv_dfpd$ano_inicio)) {dfpv_dfpd<-arrange(dfpv_dfpd,desc(ano_inicio))}
  if(nrow(dfpv_dfpd) == 0) {dfpv_dfpd <- data.frame(observacao="Não há produção no período")
  }


  ###------------------------------------- Comando para impressao dos relatorios
#  cat(paste0("### ", "XXX_NOME_XXX"))
  cat(paste0("### ", clattes[i, "nome"]))
  cat("\n\n\n")
#  cat(paste0("#### Identificador: ", "XXXXXXX"))
  cat(paste0("#### Identificador: ", clattes[i, "id"]))
  cat("\n\n\n")
  cat(paste0("#### Data de referência: ", clattes[i, "data"]))
  cat("\n\n\n")
  cat(paste0("##### Linhas de pesquisa no PPG: ", clattes[i, "linhasp"]))
  cat("\n\n\n")

  print(kable(dprl, caption = "Produção Destacada Informada", format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dfpa, caption = paste0("Produção Bibliográfica - Artigos (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dfpl, caption = paste0("Produção Bibliográfica - Livros e Capítulos (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dfpev, caption = paste0("Produção Bibliográfica - Trabalhos completos e resumos em eventos (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dftc, caption = paste0("Produção Técnica (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dfor, caption = paste0("Orientações (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")  

#  print(kable(dforano, caption = paste0("Orientações por Ano", " (", ano_ini, "-", ano_fim, ")"), format = "pandoc", row.names = #FALSE))
#  cat("\n\n\n\n")  

  print(kable(dfba, caption = paste0("Bancas (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")  

  print(kable(dfpr, caption = paste0("Projetos (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dfpap, caption = paste0("Produções associadas aos Projetos de Pesquisa (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

  print(kable(dfct, caption = paste0("Colaboração Técnica (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")  

  print(kable(dfdi, caption = paste0("Disciplinas ministradas (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n") 

  print(kable(dfpv_dfpd, caption = paste0("Intercâmbios (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")

    print(kable(dfpe, caption = paste0("Premios e distincoes (", ano_ini, "-", ano_fim, ")" ), format = "pandoc", row.names = FALSE))
  cat("\n\n\n\n")
}


Try the DoLa package in your browser

Any scripts or data that you put into this service are public.

DoLa documentation built on June 8, 2025, 11:45 a.m.