Поиск уникальных строк для некоторых столбцов в матрице с сохранением значений оставшихся столбцов - PullRequest
0 голосов
/ 16 мая 2019

У меня есть матрица, которая имеет уникальные строки для нескольких столбцов, но не для всех столбцов.Я знаю, что есть много способов найти уникальные строки, но мне нужно кое-что дополнительно.Я хочу найти уникальные строки в матрице, исключая последний столбец матрицы.Значения последнего столбца для уникальных строк должны записываться во вновь создаваемые столбцы в соответствии с количеством уникальных строк.Для иллюстрации см. Пример кода R ниже:

M <- matrix(c(rep(4:6,2),rep(1:3,2),seq(0.1,0.6,0.1)),6,3)
> colnames(M)=c("s1","s2","p")
> unique(M[,1:2])
     s1 s2
[1,]  4  1
[2,]  5  2
[3,]  6  3

Но мне нужно, чтобы выходная матрица была примерно такой:

      s1 s2 p1  p2
[1,]  4  1  0.1 0.4
[2,]  5  2  0.2 0.5
[3,]  6  3  0.3 0.6

новые столбцы p1,p2,...,p6 могут быть созданы в соответствии с максимальным количествомповторение в матрице M для уникальной строки.

Не стесняйтесь спрашивать, если вопрос не ясен.Заранее спасибо.

1 Ответ

1 голос
/ 17 мая 2019

Это можно сделать, используя spread из dplyr

as.tibble(M) %>% 
group_by(s1, s2) %>% 
mutate(index = row_number()) %>% 
ungroup() %>%
spread(index, p)

Как было сказано @WeNYoBen, для простейшего решения требуется изменение формы, и это одна из его форм.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...