2015-11-24 2 views
0

У меня есть следующий фрейм данных, из которого я хотел бы удалить наблюдения на основе трех критериев: x = x, y = y и z> = 60.Как удалить наблюдения в соответствии с критерием R, что наблюдения имеют одинаковую ценность?

df <- data.frame(x=c(1,1,2,2,3,3,4,4), 
       y=c(2011,2012,2011,2011,2013,2014,2011,2012), 
       z=c(15,15,60,60,15,15,30,15)) 

> df 
    x y z 
1 1 2011 15 
2 1 2012 15 
3 2 2011 60 
4 2 2011 60 
5 3 2013 15 
6 3 2014 15 
7 4 2011 30 
8 4 2012 15 

Фрейм данных Я ищу, таким образом (который один из й = 2 наблюдений удаляются не имеет значения):

> df1 
    x y z 
1 1 2011 15 
2 1 2012 15 
3 2 2011 60 
4 3 2013 15 
5 3 2014 15 
6 4 2011 30 
7 4 2012 15 

Мои первые мысли включали использование unique или duplicate, но я не могу понять, как это реализовать на практике.

+0

Можете ли вы предоставить некоторые различные образцы данных, потому что это, кажется, просто случай для 'duplicated', как она представлена. ('df [! duplicated (df),]') – A5C1D2H2I1M1N2O1R2T1

ответ

0

Это должно сделать трюк. Посмотрите на дублированных х и у входов, где г также больше или равно 60:

df[!(duplicated(df[,1:2]) & df$z >= 60), ] 
# x y z 
#1 1 2011 15 
#2 1 2012 15 
#3 2 2011 60 
#5 3 2013 15 
#6 3 2014 15 
#7 4 2011 30 
#8 4 2012 15 
Смежные вопросы