【发布时间】:2017-12-20 09:32:57
【问题描述】:
我有以下数据框:
> df1 <- data.frame("valA" = c(1,1,1,1,2,1,3,3,3), "valB" = c(1,2,3,1,2,3,1,2,3), "Score" = c(100,90,80,100, 60,80,10,20,30))
> df1
valA valB Score
1 1 1 100
2 1 2 90
3 1 3 80
4 1 1 100
5 2 2 60
6 1 3 80
7 3 1 10
8 3 2 20
9 3 3 30
我想要重复的值(预期的结果是):
valA valB Score
1 1 1 100
2 1 3 80
3 1 1 100
4 1 3 80
我知道在 dplyr::distinct 中有获取唯一值的代码,但我需要知道哪些行是重复的,而不是从数据框中删除重复的行。我尝试了 R base package: duplicated function,但它太慢了,因为我的数据很大(超过 2000 万行)。我也试过了:
duplicated_df1 <- df1 %>% group_by(valA, valB, Score) %>% filter(n() > 1)
这可能会导致上述预期结果,但同样,它太慢而且我没有足够的 RAM。 谁能建议我找到重复行的高效快速方法?
【问题讨论】:
-
你试过简单
duplicated(df1)吗? -
duplicated 只会返回“真正的”重复。
-
这个?
df1[duplicated(df1) | duplicated(df1, fromLast = T), ]或df1 %>% filter(duplicated(df1) | duplicated(df1,fromLast = T)) -
看看this
-
@docendodiscimus 我试过 'df1[duplicated(df1),]' ,它适用于小数据,但我的电脑崩溃了,因为我有超过 2000 万次观察,所以我需要一个更快的代码。跨度>
标签: r duplicates dplyr