Отличительный DPLYR столбец исключения в сравнении, но сохранить в результатах? - PullRequest
1 голос
/ 25 сентября 2019

У меня есть data.frame, похожий на эту структуру:

a b c
1 1 A
1 1 A
1 1 BLAH
2 2 BLAH
2 3 C

df <- data.frame(a=c(1,1,1,2,2),b=c(1,1,1,2,3), c=c("A","A","BLAH","BLAH", "C"))

Мне нужно выделить только те данные, которые различаются на основе переменных «a» и «b», но сохраняют переменную «c»в результатах - но с условием .Если есть дубликаты, оставьте только версию, НЕ равную значению «BLAH».

Вывод должен выглядеть следующим образом:

1 1 A
2 2 BLAH
2 3 C

Итак, у меня есть отдельное подмножество, и я решил отказаться от версии "BLAH"?Кроме того, обратите внимание, что я сохранил только одну из строк «1 1 A» по желанию.

Ответы [ 2 ]

0 голосов
/ 25 сентября 2019

Если нам нужно сохранить «BLAH», можно выбрать arrange столбец «c», чтобы «BLAH» была последней строкой, а затем slice первый элемент «c»

df %>%
  group_by(a, b) %>%
  arrange(a, b, c == "BLAH") %>%
  slice(1)
# A tibble: 3 x 3
# Groups:   a, b [3]
#      a     b c    
#  <dbl> <dbl> <fct>
#1     1     1 A    
#2     2     2 BLAH 
#3     2     3 C    

Преобразуя 'c' в logical и order it, FALSE будет заказан раньше TRUE в алфавитном порядке

0 голосов
/ 25 сентября 2019
df %>%
    group_by(a, b) %>%
    summarize(c = c[max(1, which(c != "BLAH"))][1]) %>%
    ungroup()
## A tibble: 3 x 3
#      a     b c    
#  <dbl> <dbl> <fct>
#1     1     1 A    
#2     2     2 BLAH 
#3     2     3 C    
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...