После преобразования всех столбцов в целочисленные значения на основе маршрута factor
и добавления значения max
предыдущих столбцов к текущему, мы pivot
переходим в «длинный» формат с pivot_longer
, связываем с оригиналом значения столбцов преобразуются в формат «long», сгруппированные по столбцу исходного значения «origval», paste
unique
элементы других столбцов
library(dplyr)
library(tidyr)
df %>%
mutate_all(~ as.integer(factor(.))) %>%
mutate(G = max(K) + G, M = max(G) + M) %>%
pivot_longer(everything()) %>%
bind_cols(df %>%
mutate_all(as.character) %>%
pivot_longer(everything(),values_to = 'origvalue') %>%
dplyr::select(-name)) %>%
group_by(origvalue) %>%
summarise_at(vars(-group_cols()), ~toString(unique(.))) %>%
dplyr::select(Group = name, C = value)
# A tibble: 9 x 2
# Group C
# <chr> <chr>
#1 K, M 1, 8
#2 G 5
#3 G 6
#4 G 7
#5 M 9
#6 M 10
#7 K, M 2, 11
#8 K 3
#9 K 4
data
df <- structure(list(K = structure(c(1L, 2L, 3L, 4L, 1L, 2L, 3L), .Label = c("12",
"KAM", "Noghl", "Zae"), class = "factor"), G = c(2345L, 2345L,
1990L, 1990L, 2345L, 1990L, 1800L), M = structure(c(3L, 4L, 4L,
2L, 2L, 1L, 1L), .Label = c("12", "441", "Gholi", "KAM"),
class = "factor")), class = "data.frame", row.names = c(NA,
-7L))