R - 不同数据框中的类似记录

时间:2016-03-02 18:57:33

标签: r dataframe filtering data-manipulation querying

我想要数据框中的每条记录,其中每条记录的前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.

我如何有效地做到这一点?

2 个答案:

答案 0 :(得分:1)

只需将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.

答案 1 :(得分:0)

尝试使用合并。这样的事情:

merge(x = first_data_frame, y = second_data_frame)

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

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