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

R-不同数据帧中的相似记录,r,dataframe,filtering,data-manipulation,querying,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,

我想要一个数据帧中的每个记录,其中每个记录的前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(查找交叉点)一样,应该只保留具有相同文件、段落和句子的记录。然后,您可以删除额外的列“事件”。你可以阅读更多关于合并的内容。 您可以使用以下命令控制要合并的列:

merge(x = first_data_frame, y = second_data_frame, by=c("File", "Paragraph", "Sentence"))
只需对%运算符中的
%使用
subset()

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.

在此之前,我已经尝试使用
merge()
,但是没有参数
by
。当然,数据帧是示例。所以我有不同的文件、段落和句子组合。我尝试了
子集(df,文件%在%df1$文件中,段落%在%df1$段落中,句子%在%df1$句子中)
,但没有成功。不过,我不知道是否可以使用
subset()
。我可以通过@Zakkery建议的
merge()
获得它。