Import your data

data <- read.csv("../00_data/ramen_ratings.csv")

set.seed(1234)
data_small <- data %>% 
    select(country, brand, stars) %>%
    sample_n(5)

data_small
##       country  brand stars
## 1 South Korea Ottogi  2.80
## 2      Taiwan Tung-I  3.00
## 3    Thailand   MAMA  3.75
## 4   Singapore   KOKA  5.00
## 5     Vietnam  Vifon  2.00

Pivoting

long to wide form

data_wide <- data_small %>% pivot_wider(names_from = country, values_from = stars)

data_wide
## # A tibble: 5 × 6
##   brand  `South Korea` Taiwan Thailand Singapore Vietnam
##   <chr>          <dbl>  <dbl>    <dbl>     <dbl>   <dbl>
## 1 Ottogi           2.8     NA    NA           NA      NA
## 2 Tung-I          NA        3    NA           NA      NA
## 3 MAMA            NA       NA     3.75        NA      NA
## 4 KOKA            NA       NA    NA            5      NA
## 5 Vifon           NA       NA    NA           NA       2

wide to long form

data_wide %>% pivot_longer('Thailand':'Taiwan', names_to = "country", values_to = "stars", values_drop_na = TRUE)
## # A tibble: 2 × 6
##   brand  `South Korea` Singapore Vietnam country  stars
##   <chr>          <dbl>     <dbl>   <dbl> <chr>    <dbl>
## 1 Tung-I            NA        NA      NA Taiwan    3   
## 2 MAMA              NA        NA      NA Thailand  3.75

Separating and Uniting

Unite two columns

data_united <- data_small %>% 
    
    unite(col = "newName", country:stars, sep = "/", remove = TRUE)

data_united
##                  newName
## 1 South Korea/Ottogi/2.8
## 2        Taiwan/Tung-I/3
## 3     Thailand/MAMA/3.75
## 4       Singapore/KOKA/5
## 5        Vietnam/Vifon/2

Separate a column

data_united %>% 
    
    separate(col = newName, into = c("country", "stars"), sep = "/")
## Warning: Expected 2 pieces. Additional pieces discarded in 5 rows [1, 2, 3, 4,
## 5].
##       country  stars
## 1 South Korea Ottogi
## 2      Taiwan Tung-I
## 3    Thailand   MAMA
## 4   Singapore   KOKA
## 5     Vietnam  Vifon

Missing Values