我想要数据框中的每条记录,其中每条记录的前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.
我如何有效地做到这一点?
答案 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"))