Junção [merge ou join] e renomeação

Olá preciso de uma ajuda.
Trabalho com as bases do Censo Escolar e preciso fazer uma junção (tipo procv) – encontrei no R como merge ou join – de colunas em tabelas distintas e renomeá-las.
Pra exemplificar

#Tabelas das turmas
PK_COD_TURMA <- c(‘11123’, ‘11133’, ‘11223’, ‘11323’, …)
HR_INICIAL <- c(‘7’, ‘8’, ‘13’, ‘19’, …)
NU_DURACAO_TURMAS <- c(‘420’, ‘420’, ‘240’, ‘220’, …)
(Turmas <- data.frame(PK_COD_TURMA, HR_INICIAL, NU_DURACAO))

#Tabela dos estudantes
FK_COD_ALUNO <- c(‘1234’, ‘5678’, ‘1357’, ‘2468’, …)
PK_COD_TURMA <- c(‘11123’, ‘11133’, ‘11223’, ‘11323’, …)
(Matriculas <- data.frame(PK_COD_MATRICULA, FK_COD_ALUNO))

Quero acrescentar as colunas “HR_INICIAL” e “NU_DURACAO” na tabela de Matrículas.
Em seguida, criar duas novas colunas, onde
HR_INICIAL <- c(‘7’, ‘8’, ‘13’, ‘19’, …)
corresponda à TURNO <- c (‘m’, ‘m’, ‘t’, ‘n’, …);

e NU_DURACAO_TURMAS <- c(‘420’, ‘420’, ‘240’, ‘220’, …)
torne-se JORNADA <- c(‘Integral’, ‘Integral’, ‘Parcial’, ‘Parcial’, …)

Como faço?
Agradeço, desde já, a ajuda!

Abraços

Oi João,

Você pode fazer isso usando o pacote dplyr da seguinte forma:

 library(dplyr)
 
 Matriculas <- Matriculas %>% 
   left_join(Turmas) %>% 
   mutate(JORNADA = if_else(NU_DURACAO_TURMAS == "420", "Integral", "Parcial"),
          TURNO = case_when(
            HR_INICIAL %in% 6:11  ~ "m",
            HR_INICIAL %in% 12:17 ~ "t",
            HR_INICIAL %in% 18:20 ~ "n"
          )
   )

Espero ter ajudado!

1 curtida

Deu certo!!!
Muito obrigado!