R-不同数据帧中的相似记录
我想要一个数据帧中的每个记录,其中每个记录的前3个属性等于另一个数据帧中一个记录的相同3个属性 例如,我有: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,
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()
获得它。