在data.frame中显示重复记录并忽略单个记录
我一直在努力解决如何在R中只选择重复的data.frame行的问题。 例如,我的data.frame是:在data.frame中显示重复记录并忽略单个记录,r,duplicates,dataframe,R,Duplicates,Dataframe,我一直在努力解决如何在R中只选择重复的data.frame行的问题。 例如,我的data.frame是: age=18:29 height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5) Names=c("John","John","John", "Harry", "Paul", "Paul", "Paul", "Khan", "Khan", "Khan", "Sam", "Joe") village <- data
age=18:29
height=c(76.1,77,78.1,78.2,78.8,79.7,79.9,81.1,81.2,81.8,82.8,83.5)
Names=c("John","John","John", "Harry", "Paul", "Paul", "Paul", "Khan", "Khan", "Khan", "Sam", "Joe")
village <- data.frame(Names, age, height)
Names age height
John 18 76.1
John 19 77.0
John 20 78.1
Harry 21 78.2
Paul 22 78.8
Paul 23 79.7
Paul 24 79.9
Khan 25 81.1
Khan 26 81.2
Khan 27 81.8
Sam 28 82.8
Joe 29 83.5
感谢您抽出时间…使用重复两次的解决方案:
village[ duplicated(village),]
另一种解决方案是:
使用重复两次的解决方案:
另一种解决方案是:
我发现@Sven的答案使用的是复制的,这是最整洁的,但是你也可以用很多其他的方法。这里还有两个: 通过将表格>1的名称与第一列中的名称进行匹配,使用表格和子集:
village[village$Names %in% names(which(table(village$Names) > 1)), ]
使用ave以稍微不同的方式制表,但子集的方式相同:
village[with(village, ave(as.numeric(Names), Names, FUN = length) > 1), ]
我发现@Sven的答案使用的是复制的,这是最整洁的,但是你也可以用很多其他的方法。这里还有两个: 通过将表格>1的名称与第一列中的名称进行匹配,使用表格和子集:
village[village$Names %in% names(which(table(village$Names) > 1)), ]
使用ave以稍微不同的方式制表,但子集的方式相同:
village[with(village, ave(as.numeric(Names), Names, FUN = length) > 1), ]
我用nested sapply提出了一个解决方案:
> village_dups =
village[unique(unlist(which(sapply(sapply(village$Names,function(x)
which(village$Names==x)),function(y) length(y)) > 1))),]
> village_dups
Names age height
1 John 18 76.1
2 John 19 77.0
3 John 20 78.1
5 Paul 22 78.8
6 Paul 23 79.7
7 Paul 24 79.9
8 Khan 25 81.1
9 Khan 26 81.2
10 Khan 27 81.8
我用nested sapply提出了一个解决方案:
> village_dups =
village[unique(unlist(which(sapply(sapply(village$Names,function(x)
which(village$Names==x)),function(y) length(y)) > 1))),]
> village_dups
Names age height
1 John 18 76.1
2 John 19 77.0
3 John 20 78.1
5 Paul 22 78.8
6 Paul 23 79.7
7 Paul 24 79.9
8 Khan 25 81.1
9 Khan 26 81.2
10 Khan 27 81.8
@SvenHohenstein,这个答案的代表一直在跳来跳去。也许OP没有意识到只有一个答案是可以接受的@SvenHohenstein,这个答案的代表一直在跳来跳去。也许OP没有意识到只有一个答案是可以接受的;