R - 不同数据帧中的相似记录

R - Similar records in different data frames

我想要数据框中的每条记录,其中每条记录的前 3 个属性等于另一个数据框中记录的相同 3 个属性。

比如我有:

   File, Paragraph, Sentence, E, ED
   1.txt, 1, 1, CM, C.M.
   1.txt, 1, 1, LF, L.F.
   1.txt, 2, 1, E, E.
   1.txt, 2, 1, M, M.
   1.txt, 4, 1, LF, L.F.
   1.txt, 4, 1, NM, N.M.
   1.txt, 6, 1, RN, R.N.
   1.txt, 7, 1, AO, A.O.

我的数据框有 3 个公共列,但行数较少。

   File Paragraph Sentence occurrences
   1.txt        1        1           2
   1.txt        2        1           2
   1.txt        4        1           2

假设得到这样的东西:

   File, Paragraph, Sentence, E, ED
   1.txt, 1, 1, CM, C.M.
   1.txt, 1, 1, LF, L.F.
   1.txt, 2, 1, E, E.
   1.txt, 2, 1, M, M.
   1.txt, 4, 1, LF, L.F.
   1.txt, 4, 1, NM, N.M.

我怎样才能有效地做到这一点?

尝试使用合并。类似的东西:

merge(x = first_data_frame, y = second_data_frame)

这将合并它们,基本上就像 SQL 中的 JOIN(找到交集),并且应该只保留具有相同文件、段落、句子的记录。然后你可以取出额外的列"occurences"。您可以阅读有关合并 here 的更多信息。 您可以使用以下命令控制要合并的列:

merge(x = first_data_frame, y = second_data_frame, by=c("File", "Paragraph", "Sentence"))

只需将 subset()%in% 运算符一起使用。

subset(df, Paragraph %in% df1$Paragraph) # Assuming Paragraph is numeric in both
#    File Paragraph Sentence  E.   ED
#1 1.txt,         1       1, CM, C.M.
#2 1.txt,         1       1, LF, L.F.
#3 1.txt,         2       1,  E,   E.
#4 1.txt,         2       1,  M,   M.
#5 1.txt,         4       1, LF, L.F.
#6 1.txt,         4       1, NM, N.M.