Import your data

data <- read_excel("../00_data/my_data.xlsx")

Pivoting

long to wide form

pivot_wider(data, names_from = severity, values_from = diagnosed)
## # A tibble: 90 × 8
##    service  component  year Penetrating Severe Moderate Mild  `Not Classifiable`
##    <chr>    <chr>     <dbl> <chr>       <chr>  <chr>    <chr> <chr>             
##  1 Army     Active     2006 189         102    709      5896  122               
##  2 Army     Guard      2006 33          26     177      1332  29                
##  3 Army     Reserve    2006 12          11     63       541   12                
##  4 Navy     Active     2006 29          28     217      2143  56                
##  5 Navy     Reserve    2006 NA          1      19       165   5                 
##  6 Air For… Active     2006 21          24     194      1966  30                
##  7 Air For… Guard      2006 5           4      20       167   8                 
##  8 Air For… Reserve    2006 NA          2      12       114   3                 
##  9 Marines  Active     2006 53          28     269      1891  23                
## 10 Marines  Reserve    2006 5           5      33       222   7                 
## # ℹ 80 more rows

wide to long form

 data %>%
  pivot_longer(
    cols = c(severity, diagnosed),
    names_to = "severity",
    values_to = "diagnosed"
  )
## # A tibble: 900 × 5
##    service component  year severity  diagnosed       
##    <chr>   <chr>     <dbl> <chr>     <chr>           
##  1 Army    Active     2006 severity  Penetrating     
##  2 Army    Active     2006 diagnosed 189             
##  3 Army    Active     2006 severity  Severe          
##  4 Army    Active     2006 diagnosed 102             
##  5 Army    Active     2006 severity  Moderate        
##  6 Army    Active     2006 diagnosed 709             
##  7 Army    Active     2006 severity  Mild            
##  8 Army    Active     2006 diagnosed 5896            
##  9 Army    Active     2006 severity  Not Classifiable
## 10 Army    Active     2006 diagnosed 122             
## # ℹ 890 more rows

Separating and Uniting

Unite two columns

data_united <- data %>%
    unite(col = "Diagnoses_by_year", year:diagnosed, sep = "/", remove = FALSE)

Separate a column

data_united %>%
    
    separate(col = Diagnoses_by_year, into = c("year", "diagnosed"), sep = "/")
## # A tibble: 450 × 5
##    service component severity         year  diagnosed
##    <chr>   <chr>     <chr>            <chr> <chr>    
##  1 Army    Active    Penetrating      2006  189      
##  2 Army    Active    Severe           2006  102      
##  3 Army    Active    Moderate         2006  709      
##  4 Army    Active    Mild             2006  5896     
##  5 Army    Active    Not Classifiable 2006  122      
##  6 Army    Guard     Penetrating      2006  33       
##  7 Army    Guard     Severe           2006  26       
##  8 Army    Guard     Moderate         2006  177      
##  9 Army    Guard     Mild             2006  1332     
## 10 Army    Guard     Not Classifiable 2006  29       
## # ℹ 440 more rows