如何删除按特征排序的重复项?



我有一个有四列的数据集。第一列是我的特质,我不想要任何特质的重复。如何使用 dplyr 包中的 duplicate() 或 unique() 函数选择删除哪一个?

如果第 2 列 = 女性,我希望保留此行。如果第 2 列中的两个重复项均为 1,我希望保留第 3 列中数量最多的一个。如果它们在第三列中相同,那么我希望保留第四列中数字最高的那个。

所以我想从这个开始:

trait sex sample_size variants 
A F 9 9 
A M 9 9 
B F 6 9
B F 3 9
C F 3 6
C F 3 3

对此:

trait sex sample_size variants
A F 9 9 
B F 6 9
C F 3 6

一种选择是filter"sex"中的"F",然后在结尾arrange"trait","sex"列和数字列desc并根据"trait"和"sex"获取distinct

library(dplyr)
df1 %>% 
filter(sex == "F") %>%
arrange(trait, sex, desc(sample_size), desc(variants)) %>% 
distinct(trait, sex, .keep_all = TRUE)
#  trait sex sample_size variants
#1     A   F           9        9
#2     B   F           6        9
#3     C   F           3        6

数据

df1 <- structure(list(trait = c("A", "A", "B", "B", "C", "C"), sex = c("F", 
"M", "F", "F", "F", "F"), sample_size = c(9L, 9L, 6L, 3L, 3L, 
3L), variants = c(9L, 9L, 9L, 9L, 6L, 3L)), class = "data.frame", 
row.names = c(NA, -6L))

最新更新