2014-02-03 5 views
0

У меня есть таблица, в которой я хочу, чтобы преобразоватьнайти уникальные элементы в матрице на основе подмножества столбцов

 t LabelA LabelB start stop 
[1,] 1  4  9  1 2 
[2,] 1  3  5  1 2 
[3,] 1  1  6  1 2 
[4,] 2  4  9  1 2 
[5,] 2  3  5  1 2 
[6,] 2  1  6  1 2 
[7,] 2  7  2  2 2 
[8,] 3  3  5  3 4 
[9,] 3  1  6  3 4 
[10,] 3  7  2  3 5 
[11,] 3  4  9  3 5 

Я хочу, чтобы фильтровать данные таким образом, чтобы строки, которые только различающиеся там номер в первом столбцы удаляются (не полностью, а только дубликат). Поэтому для строк 1 и 4 только строка 1 должна оставаться в таблице. Или для строк 3 и 9 остается только строка 9. Важно, чтобы информация в первом столбце оставалась и что самое раннее появление строки в таблице не является другим случаем.

+0

Вы можете указать свой желаемый результат – RUser

ответ

1

Вы можете использовать duplicated:

mat[!duplicated(as.data.frame(mat[, -1])), ] 

     t LabelA LabelB start stop 
[1,] 1  4  9  1 2 
[2,] 1  3  5  1 2 
[3,] 1  1  6  1 2 
[7,] 2  7  2  2 2 
[8,] 3  3  5  3 4 
[9,] 3  1  6  3 4 
[10,] 3  7  2  3 5 
[11,] 3  4  9  3 5 

где mat это имя вашей матрицы.

0

Попробуйте использовать дублированную функцию:

mymx <- matrix(c(1,4,9,1,2 ,1,3,5,1,2 ,1,1,6,1,2 ,2,4,9,1,2 ,2,3,5,1,2 ,2,1,6,1,2 ,2,7,2,2,2 ,3,3,5,3,4 ,3,1,6,3,4 ,3,7,2,3,5 ,3,4,9,3,5), ncol=5, byrow=T) 
mymx[!duplicated(mymx[,-1]),] 

> mymx[!duplicated(mymx[,-1]),] 
    [,1] [,2] [,3] [,4] [,5] 
[1,] 1 4 9 1 2 
[2,] 1 3 5 1 2 
[3,] 1 1 6 1 2 
[4,] 2 7 2 2 2 
[5,] 3 3 5 3 4 
[6,] 3 1 6 3 4 
[7,] 3 7 2 3 5 
[8,] 3 4 9 3 5 
Смежные вопросы