Tidyverse извлекает элементы из условий символов

#r #tidyverse

#r #tidyverse

Вопрос:

Я хотел бы найти в этом фрейме данных элементы var1, для которых элементы var2 отличаются

data.frame(var1=c(«a», «a»,»a»,»b», «b», «c», «c», «c»), var2 = c(«X», «X», «X», «Y»,»Z»,»W»,»W»,»W»), stringsAsFactors = F)

ожидаемый результат

data.frame(var1=c(«b»))

Заранее большое спасибо!

Ответ №1:

Работает ли это:

 library(dplyr)
df %>% group_by(var1) %>% filter(length(unique(var2))>1) %>% distinct(var1)
# A tibble: 1 x 1
# Groups:   var1 [1]
  var1 
  <chr>
1 b    
 
  

Ответ №2:

Следуя другому альтернативному подходу @Karthik и, если я правильно понял вопрос.

 library(dplyr)

df <- data.frame(var1=c("a","a","a","b","b","c","c","c"), var2=c("X","X","X","Y","Z","W","W","W"), stringsAsFactors = F)


dplyr::select(
   distinct(df)[duplicated(distinct(df)$var1),], var1
   )
  

Вызывайте select только в том случае, если вам нужно гарантировать, что вывод представляет собой фрейм данных / tibble.