R 如何通过另一个DF中的计数删除一个DF中的行?

R 如何通过另一个DF中的计数删除一个DF中的行?,r,duplicates,R,Duplicates,以下是我的两个数据帧: structure(list(Author = c("Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", "B

以下是我的两个数据帧:

structure(list(Author = c("Bubb, D. H., et al.", "Bubb, D. H., et al.", 
"Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", 
"Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", 
"Bubb, D. H., et al.", "Bubb, D. H., et al.", "Robinson et al.", 
"Robinson et al.", "Robinson et al.", "Robinson et al.", "Louca et al.", 
"Aquiloni, L., et al.", "Aquiloni, L., et al.", "Barbaresi, S., et al.", 
"Barbaresi, S., et al.", "Barbaresi, S., et al.", "Gherardi, F., et al.", 
"Gherardi, F., et al.", "Gherardi, F., et al.", "Loughman et al.", 
"Loughman et al.", "Hall et al.", "Holsman et al. ", "Holsman et al. ", 
"Smith B.D et al.", "Smith B.D et al."), Year = c(2006L, 2006L, 
2006L, 2002L, 2002L, 2002L, 2002L, 2004L, 2004L, 2004L, 2000L, 
2000L, 2000L, 2000L, 2014L, 2005L, 2005L, 2004L, 2004L, 2004L, 
2002L, 2002L, 2002L, 2013L, 2013L, 1991L, 2006L, 2006L, 1991L, 
1991L), Purpose = c("Invasive/Endangered Species", "Movement Metrics", 
"Movement Metrics", "Invasive/Endangered Species", "Movement Metrics", 
"Movement Metrics", "Movement Metrics", "Invasive/Endangered Species", 
"Movement Metrics", "Movement Metrics", "Movement Metrics", "Movement Metrics", 
"Movement Metrics", "Invasive/Endangered Species", "Human Interaction", 
"Invasive/Endangered Species", "Habitat Use", "Invasive/Endangered Species", 
"Feeding/Behavior", "Movement Metrics", "Movement Metrics", "Invasive/Endangered Species", 
"Feeding/Behavior", "Movement Metrics", "Habitat Use", "Movement Metrics", 
"Habitat Use", "Movement Metrics", "Movement Metrics", "Habitat Use"
)), row.names = c(NA, 30L), class = "data.frame")
第一个数据框显示作者、年份和研究目的(可以有多个)。但是,由于我创建数据的方式,存在一些重复项(例如,Robinson等人2000将“移动度量”列出了三次,而我只希望列出一次)

我会使用
复制的
唯一的
函数,但我原来的DF有更多的非唯一列

因此,我创建了第二个数据框,它按作者/年份/目的分组,这样三个变量的每个组合都有一个计数。我有没有办法说:

如果DF2$count>1,则在DF1中查找匹配行并删除n(counts)-1行

例如:

“SomeFunction”标识DF2中计数大于1的行

“SomeFunction”在DF2中获取作者和年份列,并与DF1匹配


“SomeFunction”删除重复的行,为每个作者/年份/目的组合保留一行

如果您的目标是删除重复的行,您可以在第一个数据帧上直接使用
dplyr
包中的
distinct
函数:

库(dplyr)
df1%>%不同(作者、年份、目的、.keep_all=TRUE)
作者年份目的
1 Bubb,D.H.等人,2006年《入侵/濒危物种》
2 Bubb,D.H.等人,2006年运动度量
3 Bubb,D.H.,等人,2002年,入侵/濒危物种
4 Bubb,D.H.,等人,2002年运动指标
5 Bubb,D.H.等人,2004年《入侵/濒危物种》
6 Bubb,D.H.,等人,2004年运动度量
7 Robinson等人,2000年运动度量
8 Robinson等人,2000年入侵/濒危物种
9 Louca等人,2014年《人类互动》
10 Aquiloni,L.等人,2005年,入侵/濒危物种
11 Aquiloni,L.等人,2005年《栖息地使用》
12 Barbaresi,S.等人,2004年入侵/濒危物种
13 Barbaresi,S.等人,2004年喂养/行为
14 Barbaresi,S.等人,2004年运动指标
15 Gherardi,F.等人,2002年运动指标
16 Gherardi,F.等人,2002年入侵/濒危物种
17 Gherardi,F.等人,2002年,喂养/行为
18 Loughman等人,2013年运动指标
19 Loughman等人2013年《栖息地使用》
20 Hall等人,1991年运动度量
21 Holsman等人,2006年栖息地使用
22 Holsman等人,2006年运动度量
23 Smith B.D等人,1991年运动度量
24 Smith B.D等人,1991年,栖息地使用

添加
.keep_all=TRUE
参数将保留所有附加列。

有没有办法这样做并保留其他列?我的原始数据帧比我自己发现的原始df有更多的列,参数
.keep_all=TRUE
in
distinct
函数会成功。
structure(list(Author = c("Aquiloni, L., et al.", "Aquiloni, L., et al.", 
"Barbaresi, S., et al.", "Barbaresi, S., et al.", "Barbaresi, S., et al.", 
"Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", 
"Bubb, D. H., et al.", "Bubb, D. H., et al.", "Bubb, D. H., et al.", 
"Gherardi, F., et al.", "Gherardi, F., et al.", "Gherardi, F., et al.", 
"Hall et al.", "Holsman et al. ", "Holsman et al. ", "Louca et al.", 
"Loughman et al.", "Loughman et al.", "Robinson et al.", "Robinson et al.", 
"Smith B.D et al.", "Smith B.D et al."), Year = c(2005L, 2005L, 
2004L, 2004L, 2004L, 2002L, 2002L, 2004L, 2004L, 2006L, 2006L, 
2002L, 2002L, 2002L, 1991L, 2006L, 2006L, 2014L, 2013L, 2013L, 
2000L, 2000L, 1991L, 1991L), Purpose = c("Habitat Use", "Invasive/Endangered Species", 
"Feeding/Behavior", "Invasive/Endangered Species", "Movement Metrics", 
"Invasive/Endangered Species", "Movement Metrics", "Invasive/Endangered Species", 
"Movement Metrics", "Invasive/Endangered Species", "Movement Metrics", 
"Feeding/Behavior", "Invasive/Endangered Species", "Movement Metrics", 
"Movement Metrics", "Habitat Use", "Movement Metrics", "Human Interaction", 
"Habitat Use", "Movement Metrics", "Invasive/Endangered Species", 
"Movement Metrics", "Habitat Use", "Movement Metrics"), count = c(1L, 
1L, 1L, 1L, 1L, 1L, 3L, 1L, 2L, 1L, 2L, 1L, 1L, 1L, 1L, 1L, 1L, 
1L, 1L, 1L, 1L, 3L, 1L, 1L)), class = "data.frame", row.names = c(NA, 
-24L))