Crosstable e ifelse

Olá comunidade.

Estou com uma dificuldade em juntar umas funções. Lá vai a questão.

Tenho um banco de dados imenso [Censo Escolar, planilha de professores] que preciso fazer uma tabela cruzada (popular CrossTable) e, em seguida, fazer um VERDADEIRO ou FALSO para todas as colunas.

Faço o crosstable pela função abaixo:
DocentesDep <- table(Bd11$FK_COD_DOCENTE, Bd11$ID_DEPENDENCIA_ADM)
[traduzindo: FK_COD_DOCENTE é a identificação do professor e ID_DEPENDENCIA_ADM é a rede escolar que ele atua (federal, estadual, municipal ou particular)]

Isso me dá como resultado um vetor:

glimpse(DocentesDep)
    'table' int [1:463467, 1:4] 0 0 0 0 0 0 0 0 0 0 ...
     - attr(*, "dimnames")=List of 2
      ..$ : chr [1:463467] "115000693883" "115000821040" "115000821121" "115000821393" ...
      ..$ : chr [1:4] "1" "2" "3" "4"

Esse cruzamento mostra a quantidade de vezes que o Docente aparece para cada rede de ensino.

A partir disso, quero construir um novo dataframe com as mesmas quatro colunas com ID_DEPENDENCIA, porém apresentando “1” quando o resultado for maior do que zero e “0” quando for igual a zero.

E é aí que travo :frowning:
Não consigo fazer esse novo dataframe. Imagino que seja com juntando com ifelse ou case_when, ou talvez mutate. Mas, não rolou…

Quem puder trazer uma luz, agradeço muito.

Abraços
João Victor

Oi João,

Quando você usa a função table(), você obtêm um objeto de classe “table” e não “data.frame”. Assim, primeiro você precisa converter a tabela em data.frame para depois usar as funções citadas do dplyr. Você pode fazer algo do tipo:

DocentesDep %>%  
     data.frame() %>% 
     dplyr::mutate(
        ID_DEPENDENCIA = dplyr::if_else(Freq > 0, 1, 0)
     )
2 curtidas