Как я могу удалить дубликаты, отсортированные по признакам? - PullRequest
2 голосов
/ 21 мая 2019

У меня есть набор данных с четырьмя столбцами.В первом столбце моя черта, и я не хочу дубликатов черты.Как я могу выбрать, какой из них удаляется с помощью функции duplicate () или unique () в пакете dplyr?

Если столбец 2 = Female, я хочу сохранить эту строку.Если оба столбца равны 1 в столбце 2, я хочу сохранить тот, который имеет наибольшее число в столбце 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

1 Ответ

2 голосов
/ 21 мая 2019

Можно указать filter 'F' в 'sex', затем arrange столбцы 'trait', 'sex' и числовые столбцы в 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))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...