Inserir caractere de acordo com condição

Oi gente, tudo bem?
Eu tenho uma situação que é a seguinte: alunos quando fazem a prova do ENEM, em especial em Linguagens, escolhem se vão responder as questões de inglês ou espanhol.

A base de dados vem com 45 respostas, sendo que as 5 primeiras são as opções de língua estrangeira.

Preciso transformar a string de 45 posições para 50 posições, colocando os caracteres 99999 nas posições de 6 a 10 se ele respondeu a prova de inglês e na posição de 1 a 5 se ele responder a prova de espanhol.

Alguém poderia me dar uma luz de como fazer isso?

Agradeço desde já a ajuda

Oi Eduardo, tudo bem, e com você?
Pela sua explicação, a função dplyr::case_when() pode ser útil.

E nessa resposta existe exemplos de como usar case_when() com across() para aplicar a mesma regra em várias colunas: r - Using case_when with dplyr across - Stack Overflow

Se você quiser um exemplo com código, recomendo colocar um exemplo da base (mesmo que curta… a função dput() ajuda nisso, pois gera no console o código para criar o dataset sem que vc precise exportar em um arquivo. por exemplo:)

library(magrittr, include.only = "%>%")
mtcars %>%  
  # sortear 10 linhas
  dplyr::slice_sample(n = 10) %>% 
  # selecionar colunas interessantes pro exemplo
  dplyr::select(wt:am) %>% 
  dput()
#> structure(list(wt = c(1.513, 2.465, 3.78, 2.32, 3.19, 3.215, 
#> 3.84, 3.435, 3.44, 3.845), qsec = c(16.9, 20.01, 18, 18.61, 20, 
#> 19.44, 15.41, 17.3, 18.3, 17.05), vs = c(1, 1, 0, 1, 1, 1, 0, 
#> 0, 1, 0), am = c(1, 0, 0, 1, 0, 0, 0, 0, 0, 0)), row.names = c("Lotus Europa", 
#> "Toyota Corona", "Merc 450SLC", "Datsun 710", "Merc 240D", "Hornet 4 Drive", 
#> "Camaro Z28", "AMC Javelin", "Merc 280", "Pontiac Firebird"), class = "data.frame")

Created on 2021-09-24 by the reprex package (v2.0.1)

1 curtida