Import your data

palm <- read_excel("../00_data/palmtrees.xlsx")
## Warning: Coercing text to numeric in V1449 / R1449C22: '0.56675675700000006'
set.seed(123)
palm_sample <- palm %>%
    
    select(palm_tribe, palm_subfamily, average_fruit_width_cm) %>%
    
    sample_n(5) %>%
    slice(1,2,3,4)

palm_sample
## # A tibble: 4 × 3
##   palm_tribe palm_subfamily average_fruit_width_cm
##   <chr>      <chr>                           <dbl>
## 1 Cocoseae   Arecoideae                       1.75
## 2 Areceae    Arecoideae                       0.8 
## 3 Euterpeae  Arecoideae                       1   
## 4 Calameae   Calamoideae                      0.75
set.seed(1234)
palm_small <- palm %>%
    
    select(palm_tribe, max__rachis__length_m, max__petiole_length_m) %>%
    filter(palm_tribe %in% c("Cocoseae", "Areceae")) %>%
    
    sample_n(5)

palm_small
## # A tibble: 5 × 3
##   palm_tribe max__rachis__length_m max__petiole_length_m
##   <chr>                      <dbl>                 <dbl>
## 1 Cocoseae                    2.14                 NA   
## 2 Cocoseae                    3.07                  0.14
## 3 Areceae                    NA                    NA   
## 4 Areceae                     0.75                  0.27
## 5 Areceae                     4                    NA

Pivoting

wide to long form

palm_wide <- palm_sample %>%
    
    pivot_wider(names_from = palm_tribe,
                values_from = average_fruit_width_cm)

palm_wide
## # A tibble: 2 × 5
##   palm_subfamily Cocoseae Areceae Euterpeae Calameae
##   <chr>             <dbl>   <dbl>     <dbl>    <dbl>
## 1 Arecoideae         1.75     0.8         1    NA   
## 2 Calamoideae       NA       NA          NA     0.75

long to wide form

palm_long <- palm_wide %>%
    
    pivot_longer(c(`Cocoseae`, `Areceae`),
                 names_to = "tribe",
                 values_to = "fruit",
                     values_drop_na = TRUE)
palm_long
## # A tibble: 2 × 5
##   palm_subfamily Euterpeae Calameae tribe    fruit
##   <chr>              <dbl>    <dbl> <chr>    <dbl>
## 1 Arecoideae             1       NA Cocoseae  1.75
## 2 Arecoideae             1       NA Areceae   0.8

Separating and Uniting

Unite two columns

palm_unite <- palm_small %>%
    
    unite(branch, max__rachis__length_m,max__petiole_length_m, sep = "/",na.rm = TRUE) %>%
    slice(1,2,4,5)

palm_unite
## # A tibble: 4 × 2
##   palm_tribe branch   
##   <chr>      <chr>    
## 1 Cocoseae   2.14     
## 2 Cocoseae   3.07/0.14
## 3 Areceae    0.75/0.27
## 4 Areceae    4

Separate a column

palm_separate <- palm_unite %>%
    
    separate(branch, into = c("max__rachis__length_m", "max__petiole_length_m"), sep = "/") %>%
    slice(2,3)
## Warning: Expected 2 pieces. Missing pieces filled with `NA` in 2 rows [1, 4].
palm_separate
## # A tibble: 2 × 3
##   palm_tribe max__rachis__length_m max__petiole_length_m
##   <chr>      <chr>                 <chr>                
## 1 Cocoseae   3.07                  0.14                 
## 2 Areceae    0.75                  0.27