Tenho uma série de dataframes, cada um dos quais contém uma coluna de nome e, em seguida, uma coluna de texto. Gostaria de encontrar duplicatas no texto e, em seguida, gerar uma lista de todos os nomes que estão associados à duplicata. Posso chegar a obter uma lista das duplicatas de texto e o número de vezes que cada duplicata ocorre, mas estou com dificuldades para encontrar uma maneira de obter a lista de nomes associados. Aqui está um exemplo reproduzível:
#two separate data frames with name/string
books1 <- data.frame(
name=rep("Ellie", 4),
book= c("Anne of Green Gables", "The Secret Garden", "Alice in Wonderland", "A Little Princess"))
books2 <- data.frame(
name=rep('Jess', 6),
book=c("Harry Potter", "Percy Jackson", "Anne of Green Gables", "Chronicles of Narnia", "Redwall", "A Little Princess"))
#combine into single data frame
books <- bind_rows(books1, books2)
#identify repeats
repeatbooks <- books %>% group_by(book) %>% summarize(n=n())
Isso me dá:
book n
1 A Little Princess 2
2 Alice in Wonderland 1
3 Anne of Green Gables 2
4 Chronicles of Narnia 1
5 Harry Potter 1
6 Percy Jackson 1
7 Redwall 1
8 The Secret Garden 1
O que eu gostaria é algo como:
book n name
1 A Little Princess 2 Ellie, Jess
2 Alice in Wonderland 1 Ellie
3 Anne of Green Gables 2 Ellie, Jess
Eu esperava fazer algo assim, mas isso cria várias linhas, em vez de agrupar os nomes em uma única linha
#identify repeats while catching associated names - doesn't group into single column
repeatbooks <- books %>% group_by(book) %>% summarize(n=n(), names=c(paste0(name), ', '))
Você quer dizer algo como abaixo
tal que
Modificar levemente sua primeira tentativa faz com que funcione se você colocar o valor de collapse na chamada paste0. Estranhamente, porém, só funciona se você definir explicitamente o valor de collapse.