如何从R中的两个数据帧中提取三元组?

时间:2019-04-16 10:45:02

标签: r dataframe

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

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语法感到困惑而无法使用...任何帮助,我们深表感谢!

1 个答案:

答案 0 :(得分:0)

似乎您只想合并数据,但是在两个数据框中使用完全相同的变量名有点不幸。因此,merge()函数在不对数据进行少许调整的情况下就无法工作,因为否则它将在所有共享变量名中搜索相同的值。我在您的"_oa"变量名称中添加了"_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