Опция pivot_wider
. Здесь «второй» столбец также является столбцом последовательности для каждой группы «первого». Итак, продублируйте этот столбец с mutate
, а затем используйте pivot_wider
для изменения формы с «длинного» на «широкий»
library(dplyr)
library(tidyr)
df1 %>%
mutate(rn = second) %>%
pivot_wider(names_from = rn, values_from = c(second, third), names_sep = ".")
# A tibble: 3 x 7
# first second.1 second.2 second.3 third.1 third.2 third.3
# <chr> <int> <int> <int> <chr> <chr> <chr>
#1 A 1 2 3 A1 A2 A2
#2 B 1 NA NA B1 <NA> <NA>
#3 C 1 2 NA C1 C2 <NA>
данные
df1 <- structure(list(first = c("A", "A", "A", "B", "C", "C"), second = c(1L,
2L, 3L, 1L, 1L, 2L), third = c("A1", "A2", "A2", "B1", "C1",
"C2")), class = "data.frame", row.names = c(NA, -6L))