tidyverse
раствор.
Разница в том, что вложенность возвращает список-столбец в противоположность символьному векторному столбцу. В зависимости от ваших потребностей это может быть или не быть лучше.
library(tidyverse, warn.conflicts = FALSE)
all_transcripts %>%
nest(-ConvID) %>%
mutate(unique_names = map(data, ~ unique(.[, "Name", drop = TRUE]))) %>%
select(-data)
#> ConvID unique_names
#> 1 5 Guest, Agent
#> 2 6 Reception, Guest, Agent
#> 3 7 Reception, Guest
#> 4 8 Reception, Guest, Agent
data.table
раствор
library(data.table)
setDT(all_transcripts)
all_transcripts[, .(unique_names = list(unique(Name))) , by = ConvID]
#> ConvID unique_names
#> 1: 5 Guest,Agent
#> 2: 6 Reception,Guest,Agent
#> 3: 7 Reception,Guest
#> 4: 8 Reception,Guest,Agent
Данные
all_transcripts <- structure(list(ConvID = c(5L, 5L, 5L, 5L, 5L, 6L, 6L, 6L, 6L,
6L, 7L, 7L, 7L, 7L, 7L, 8L, 8L, 8L), Name = c("Guest", "Guest",
"Agent", "Guest", "Agent", "Reception", "Guest", "Agent", "Guest",
"Guest", "Reception", "Reception", "Guest", "Guest", "Reception",
"Reception", "Guest", "Agent")), .Names = c("ConvID", "Name"), row.names = c(NA,
-18L), class = c("data.table", "data.frame"))