我有一个包含四列的数据集。在第一栏中,是我的特征,我不希望该特征有任何重复。如何使用dplyr软件包中的plicate()或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
答案 0 :(得分:2)
一种选择是filter
“性别”中的“ F”,然后arrange
“性状”,“性别”列和desc
中的数字列结束并得到基于“特征”和“性别”的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))