Separar valores de uma coluna em novas colunas

Recebi essa dúvida por email:

Tenho uma base de dados em que tenho um coluna chamada “sintomas” e os campos preenchidos da seguinte forma: “febre;tosse;dor”.

Preciso separar esta coluna em novas colunas da seguinte forma: “sintoma_febre”, “sintoma_tosse”, “sintoma_dor”; ao invés de “sintoma_1”, “sintoma_2”, “sintoma_3”.

Será que você conseguiria me orientar sobre o nome da função pra eu resolver isso?

2 Curtidas

Eu usaria a função tidyr::separate(), e o argumento into é útil para declarar o nome das colunas que serão criadas.

library(magrittr, include.only = "%>%")
# criando uma base para fazer o exemplo
exemplo_dataset <- tibble::tibble(sintoma = c(
  "com febre;com tosse;com dor",
  "sem febre;sem tosse;com dor"
))

exemplo_dataset
#> # A tibble: 2 x 1
#>   sintoma                    
#>   <chr>                      
#> 1 com febre;com tosse;com dor
#> 2 sem febre;sem tosse;com dor

# usando a função tidyr::separate() para separar os valores da coluna sintomas

exemplo_dataset %>%
  tidyr::separate(
    col = sintoma, # qual coluna pra separar
    # into - qual é o nome das colunas a serem criadas
    into = c("sintoma_febre", "sintoma_tosse", "sintoma_dor"),
    sep = ";" # o separador usado
  )
#> # A tibble: 2 x 3
#>   sintoma_febre sintoma_tosse sintoma_dor
#>   <chr>         <chr>         <chr>      
#> 1 com febre     com tosse     com dor    
#> 2 sem febre     sem tosse     com dor

Created on 2021-05-18 by the reprex package (v2.0.0)

5 Curtidas