我有一个有四列的数据集。第一列是我的特质,我不想要任何特质的重复。如何使用 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))