Удалить строки в кадре данных на основе трех столбцов - PullRequest
6 голосов
/ 01 ноября 2011

У меня есть датафрейм вроде z:

z <- matrix(c(1,0,0,1,1,0,0, 
      1,0,0,0,1,0,0, 
      0,0,0,0,0,0,0, 
      0,0,1,0,0,0,0), 
    nrow=7, 
    dimnames=list(LETTERS[1:7],NULL)) 

   [,1] [,2] [,3] [,4]
A    1    1    0    0
B    0    0    0    0
C    0    0    0    1
D    1    0    0    0
E    1    1    0    0
F    0    0    0    0
G    0    0    0    0

Теперь я хочу удалить дублирующиеся строки, в которых значения столбцов 1, 2 и 3 совпадают.

  • Удалить строку E, потому что она идентична A.
  • Удалить строки C, F и G, потому что они идентичны B.

Результат должен быть таким:

   [,1] [,2] [,3] [,4]
A    1    1    0    0
B    0    0    0    0
D    1    0    0    0

Может ли кто-нибудь помочь мне с этим? Большое спасибо!

1 Ответ

7 голосов
/ 01 ноября 2011
> z[rownames(unique(z[,-4])),]
  [,1] [,2] [,3] [,4]
  A    1    1    0    0
  B    0    0    0    0
  D    1    0    0    0
...