首页 > 解决方案 > 如何从 R 中的两个数据帧中提取三元组?

问题描述

我有两个这样的数据框,是从大量文档中提取的:

id <- c("doc7")
lemma_target <- c("Teilestatus", "Meldung", "Datum", "Datum", "Betriebsarten")
lemma <- c("ergeben", "senden", "ermitteln", "sammeln", "enthalten")
origin <- c("oa_relations")

oa_relations <- data.frame(id, lemma_target, lemma, origin)

id <- c("doc7")
lemma_target <- c("Information", "welch", "teilen", "System", "Datum")
lemma <- c("ergeben", "werden", "werden", "sammeln", "enthalten")
origin <- c("sb_relations")

sb_relations <- data.frame(id, lemma_target, lemma, origin)

现在我想从两个数据帧中提取三元组,在我的示例中System - sammeln - Datum:我希望同一个文档(在本例中)中的所有lemma_target位置lemma都相同(在本例中为“sammeln” doc7)。我尝试使用rbind然后过滤和选择加入dfs,但它不起作用,因为我对SQL语法感到困惑......非常感谢任何帮助!

标签: rdataframe

解决方案


看起来您只是想合并数据,但在两个数据帧中使用完全相同的变量名称有点不走运。因此,merge()如果不对数据稍加调整,该函数就无法工作,因为否则它会在所有共享变量名称中搜索相同的值。我在您的变量名中添加了"_oa"and并假设变量名不是必需的。"_sb""lemma_target"origin

colnames(oa_relations)[2] <- "lemma_target_oa"
colnames(sb_relations)[2] <- "lemma_target_sb"
oa_relations$origin <- NULL
sb_relations$origin <- NULL

merge(oa_relations, sb_relations)

这给出了:

    id     lemma lemma_target_oa lemma_target_sb
1 doc7 enthalten   Betriebsarten           Datum
2 doc7   ergeben     Teilestatus     Information
3 doc7   sammeln           Datum          System

推荐阅读