Управляйте строками, чтобы сохранить их в dplyr - PullRequest
0 голосов
/ 14 февраля 2019

Здесь у меня есть фрейм данных:

df2 <- data.frame(a=c("A", "A", "B"), b=c(1, 0, 1))
df2 %>% 
  distinct(a, .keep_all=TRUE)

Результат:

  a b
1 A 1
2 B 1

Но я бы хотел контролировать, какая строка сохраняется с условием.Например, distinct(a), но сохраняйте строку, когда b == 0.То есть я хочу сохранить другой ряд с A.

Ответы [ 2 ]

0 голосов
/ 14 февраля 2019

Вам может понадобиться создать функцию самоопределения для проверки всех duplicated, нам нужно объединить обе проверки из столбцов a и b

dupf=function(x){

     return(duplicated(x) | duplicated(x, fromLast=TRUE))

 }
df2 %>% dplyr::mutate(ft=!(dupf(a)&dupf(b)))%>%filter(ft)
  a b   ft
1 A 0 TRUE
2 B 1 TRUE
0 голосов
/ 14 февраля 2019

Упорядочить tibble перед использованием distinct.

library(dplyr)

df2 <- data.frame(a=c("A", "A", "B"), b=c(1, 0, 1))
df2 %>% 
  arrange(a, b) %>%
  distinct(a, .keep_all=TRUE)
#   a b
# 1 A 0
# 2 B 1
...