查找矩阵中某些列的唯一行,保留其余列的值

时间:2019-05-16 20:57:11

标签: r

我有一个矩阵,其中的几行具有唯一的行,但并非所有列都有唯一的行。我知道有很多找到唯一行的方法,但是我还需要一些东西。我想在矩阵中找到唯一的行,但矩阵的最后一列除外。唯一行的最后一列的值应根据唯一行的数量记录在新生成的列中。有关说明,请参见下面的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 个答案:

答案 0 :(得分:1)

可以使用spread中的dplyr

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

正如@WeNYoBen所说,它需要重塑为最简单的解决方案,这是它的一种形式。