У меня есть данные с переменной группировки («from») и значениями («число»):
from number
1 1
1 1
2 1
2 2
3 2
3 2
Я хочу подмножить данные и выбрать группы, которые имеют два или более уникальных значения. По моим данным, только группа 2 имеет более одного отдельного «числа», поэтому это желаемый результат:
from number
2 1
2 2
Вы можете попробовать
library(dplyr)
df1 %>%
group_by(from) %>%
filter(n_distinct(number)>1)
# from number
#1 2 1
#2 2 2
Или использовать base R
indx <- rowSums(!!table(df1))>1
subset(df1, from %in% names(indx)[indx])
# from number
#3 2 1
#4 2 2
Или
df1[with(df1, !ave(number, from, FUN=anyDuplicated)),]
# from number
#3 2 1
#4 2 2
Использование концепции дисперсии, разделяемой Дэвидом, но выполняющей ее dplyr way:
library(dplyr)
df %>%
group_by(from) %>%
mutate(variance=var(number)) %>%
filter(variance!=0) %>%
select(from,number)
#Source: local data frame [2 x 2]
#Groups: from
#from number
#1 2 1
#2 2 2