Как извлечь тройки из двух фреймов данных в R?

#r #dataframe

#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 то же самое (в данном случае «саммелн») из одного и того же документа (в данном случае doc7 ).
Я попытался присоединиться к dfs, используя rbind , а затем фильтровать и выбирать, но это не сработает, потому что я путаюсь в SQL-синтаксисе… Любая помощь приветствуется!

Ответ №1:

Похоже, вы просто хотите объединить данные, но немного не повезло, что вы использовали одни и те же имена переменных в обоих фреймах данных. Таким образом, 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
  

Комментарии:

1. Хорошо, я понял вашу идею — но зачем вам присваивать origin столбцу значение NULL?

2. При присвоении значения NULL столбец удаляется. Я сделал это, потому что кажется, что в этом нет необходимости.

3. merge Функция была именно тем, что я искал! Извлекши пример из большего df, я не учел, что повторяющиеся переменные будут проблемой — я изменю это в своих данных.