Я буду работать с mtcars, чтобы сделать это воспроизводимым.
Я пытаюсь создать функцию, которая позволит мне создать объединенный уникальный идентификатор (ключ) с сгруппированной переменной.Это необходимо для легкой индексации, когда я перемещаю вывод в Excel.
Вот мой сгруппированный фрейм данных.* Я добавил AdditionalVar, поскольку dplyr удалит последнюю сгруппированную переменную.
df <- mtcars %>%
mutate(AdditionalVar = "AddVar") %>%
group_by(cyl,gear,carb,AdditionalVar) %>%
summarise(avgHP = mean(hp))
# Groups: cyl, gear, carb [?]
cyl gear carb AdditionalVar avgHP
<dbl> <dbl> <dbl> <chr> <dbl>
1 4 3 1 AddVar 97
2 4 4 1 AddVar 72.5
3 4 4 2 AddVar 79.5
4 4 5 2 AddVar 102
5 6 3 1 AddVar 108.
6 6 4 4 AddVar 116.
7 6 5 6 AddVar 175
8 8 3 2 AddVar 162.
9 8 3 3 AddVar 180
10 8 3 4 AddVar 228
11 8 5 4 AddVar 264
12 8 5 8 AddVar 335
Моя цель - создать столбец Conc (уникальный ключ), который работает с сгруппированными переменными, как показано ниже.я не хочу конкретизировать сгруппированные переменные напрямую, поскольку это не может быть перенесено в другие приложения без изменения.
> df %>% mutate(Conc= paste(cyl,gear,carb,sep = "`"))
# A tibble: 12 x 6
# Groups: cyl, gear, carb [12]
cyl gear carb AdditionalVar avgHP Conc
<dbl> <dbl> <dbl> <chr> <dbl> <chr>
1 4 3 1 AddVar 97 4`3`1
2 4 4 1 AddVar 72.5 4`4`1
3 4 4 2 AddVar 79.5 4`4`2
4 4 5 2 AddVar 102 4`5`2
5 6 3 1 AddVar 108. 6`3`1
6 6 4 4 AddVar 116. 6`4`4
7 6 5 6 AddVar 175 6`5`6
8 8 3 2 AddVar 162. 8`3`2
9 8 3 3 AddVar 180 8`3`3
10 8 3 4 AddVar 228 8`3`4
11 8 5 4 AddVar 264 8`5`4
12 8 5 8 AddVar 335 8`5`8
Я думаю, что ответом будет что-то подобное ниже, но это дает мнеимена столбцов как Conc вместо данных, как указано выше.
> df %>% mutate(Conc= paste0(!!group_vars(.),collapse = "`"))
# A tibble: 12 x 6
# Groups: cyl, gear, carb [12]
cyl gear carb AdditionalVar avgHP Conc
<dbl> <dbl> <dbl> <chr> <dbl> <chr>
1 4 3 1 AddVar 97 cyl`gear`carb
2 4 4 1 AddVar 72.5 cyl`gear`carb
3 4 4 2 AddVar 79.5 cyl`gear`carb
4 4 5 2 AddVar 102 cyl`gear`carb
5 6 3 1 AddVar 108. cyl`gear`carb
6 6 4 4 AddVar 116. cyl`gear`carb
7 6 5 6 AddVar 175 cyl`gear`carb
8 8 3 2 AddVar 162. cyl`gear`carb
9 8 3 3 AddVar 180 cyl`gear`carb
10 8 3 4 AddVar 228 cyl`gear`carb
11 8 5 4 AddVar 264 cyl`gear`carb
12 8 5 8 AddVar 335 cyl`gear`carb