【问题标题】:Finding unique rows for some columns in a matrix with values of remaining columns being preserved为矩阵中的某些列查找唯一行,并保留剩余列的值
【发布时间】:2019-05-16 20:57:11
【问题描述】:

我有一个矩阵,它有几列的唯一行,但不是所有列。我知道有很多方法可以找到唯一的行,但我还需要一些额外的东西。我想在矩阵中找到唯一的行,不包括矩阵的最后一列。唯一行的最后一列的值应根据唯一行数记录在新生成的列中。为了说明,请参见下面的 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

可以根据矩阵M 中唯一行的最大重复次数创建新列p1,p2,...,p6

如果问题不清楚,请随时提出。提前致谢。

【问题讨论】:

  • 这是重塑..

标签: r


【解决方案1】:

这可以使用来自dplyrspread 来完成

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-05-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多