我有一个矩阵,其中的几行具有唯一的行,但并非所有列都有唯一的行。我知道有很多找到唯一行的方法,但是我还需要一些东西。我想在矩阵中找到唯一的行,但矩阵的最后一列除外。唯一行的最后一列的值应根据唯一行的数量记录在新生成的列中。有关说明,请参见下面的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
。
请随时询问问题是否明确。预先感谢。
答案 0 :(得分:1)
可以使用spread
中的dplyr
as.tibble(M) %>%
group_by(s1, s2) %>%
mutate(index = row_number()) %>%
ungroup() %>%
spread(index, p)
正如@WeNYoBen所说,它需要重塑为最简单的解决方案,这是它的一种形式。