【发布时间】:2020-05-02 14:37:49
【问题描述】:
我正在分析 RePEc 数据库中的 ID。每个 ID 都匹配一个唯一的出版物,有时出版物是相互链接的,因为它们是彼此的不同版本(例如,工作论文变成了期刊文章)。我有一个包含大约 250,000 个条目的数据库,这些条目在一列中显示主要 ID,然后在另一列中显示前一个或备用 ID。它看起来像这样:
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 列中的哪些ID 也出现在alt_repec_id 列中,并创建一个只有符合此条件的行的数据框。我试图在“|”处拆分并像这样使用%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")
有人能解决我的问题吗?提前感谢您的帮助!
【问题讨论】:
-
你尝试过内部连接吗?
-
在您上面提供的示例中,3 行中的任何一行是否符合您要查找的条件?
-
没有一个匹配。如果他们这样做会更容易理解吗?另外,我还没有尝试过内部连接。我将如何在这里使用它?谢谢你们的帮助!
-
查看新示例和所需输出
标签: r