У меня есть такой тиббл:
library(tidyverse)
df <- tibble(
id = 1:3,
names = c("George G|Nick N", "Nick N|Andrian A", "Era E")
)
Столбец names
имеет неодинаковую длину имен.
Я хочу извлечь эти имена и сравнить, если есть какие-либо общие имена.
Извлечение:
df_names <- (lapply(df$names, function(x) {strsplit(x, split="|", fixed = TRUE)}))
Теперь я не уверен, как перейти к сравнению.
Я пробовал что-то вроде:
maxlength <- max(sapply(df_names, length))
lapply(seq(maxlength),function(i) Reduce(intersect, lapply(df_names,"[[",i)))
но возвращает пустой список символов.
Под общими именами я имею в виду, как мы видим, df_names[[1]]
и df_names[[2]]
имеют общее имя Nick N
.
Тогда я могуНапример, сгруппируйте по идентификатору и заговорите против общих имен, чтобы увидеть, какие идентификаторы имеют общие имена.
Пример графика: