如何根据重复值过滤 Dataframe ?[duplicate]

dy1byipe  于 2023-03-10  发布在  其他
关注(0)|答案(3)|浏览(116)

此问题在此处已有答案

how to remove unique entry and keep duplicates in R(3个答案)
3天前关闭。
我有这个df

df = data.frame(x = c(1,1,2,2,3,4),
                y = LETTERS[1:6] )

所需输出为

x y
1 1 A
2 1 B
3 2 C
4 2 D

我尝试使用filter函数,但没有得到我想要的结果。
谢谢。

v6ylcynt

v6ylcynt1#

含碱基R

> subset(df, duplicated(df$x)| duplicated(df$x, fromLast = TRUE))
  x y
1 1 A
2 1 B
3 2 C
l5tcr1uw

l5tcr1uw2#

可以按组使用n()

library(dplyr) #1.1.0 needed or above
df %>% 
  filter(n() > 1, .by = x)

  x y
1 1 A
2 1 B
3 2 C
4 2 D

或者,在base R中:

subset(df, ave(x, x, FUN = length) > 1)

data.table中:

setDT(df)[, if(.N > 1) .SD, x]
hfyxw5xn

hfyxw5xn3#

如果我们按单个列分组,则n()〉1的所有组都具有该列的“重复”值

library(dplyr)

df %>%
    group_by(x) %>%
    filter(n()>1) %>%
    ungroup()

# A tibble: 4 × 2
      x y    
  <dbl> <chr>
1     1 A    
2     1 B    
3     2 C    
4     2 D

相关问题