Я анализирую идентификаторы из базы данных RePE c. Каждый идентификатор соответствует уникальной публикации, и иногда публикации связаны между собой, потому что они являются разными версиями друг друга (например, рабочий документ, который становится журнальной статьей). У меня есть база данных около 250 000 записей, которая показывает основные идентификаторы в одном столбце, а затем предыдущие или альтернативные идентификаторы в другом. Это выглядит так:
df$repec_id <– c("RePEc:cid:wgha:353", "RePEc:hgd:wpfacu:350","RePEc:cpi:dynxce:050")
df$alt_repec_id <– c("RePEc:sii:giihdizi:heidwg06-2019|RePEc:azi:cusiihdizi:gdhs06-2019", "RePEc:tqu:vishdizi:d8z7-200x", "RePEc:aus:cecips:15_59|RePEc:sga:leciam:c8wc0z888s|RePEc:cpi:dynxce:050", "RePEc:cid:wgha:353|RePEc:hgd:wpfacu:350")
Я хочу выяснить, какие идентификаторы из столбца repec_id
также присутствуют в столбце alt_repec_id
, и создать фрейм данных, в котором есть только строки, соответствующие этому условию. Я попытался strsplit на "|" и используйте функцию %in%
следующим образом:
df <- separate_rows(df, alt_repec_id, sep = "\\|")
df1 <- df1[trimws(df$alt_repec_id) %in% trimws(df$repec_id), ]
df1<- data.frame(df1)
df1 <- na.omit(df1)
df1 <- df1[!duplicated(df1$repec_id),]
Это работает, но я беспокоюсь, что, удаляя дублирующиеся строки на основе значений в столбце repec_id
, я случайно удаляю совпадения. Это правильно?
В конечном итоге я хочу, чтобы кадр данных содержал только те значения, в которых строки в столбце repec_id
соответствуют частичным строкам в столбце alt_repec_id
. Используя приведенный выше пример, я хочу получить следующий результат:
df$repec_id <– c("RePEc:cpi:dynxce:050")
df$alt_repec_id <– c("RePEc:aus:cecips:15_59|RePEc:sga:leciam:c8wc0z888s|RePEc:cpi:dynxce:050")
У кого-нибудь есть решение моей проблемы? Заранее спасибо за помощь!