【问题标题】:Selecting unique rows in matrix using R [duplicate]使用R选择矩阵中的唯一行
【发布时间】:2012-12-12 15:55:18
【问题描述】:

可能重复:
Select only the first rows for each unique value of a column in R

我有一个如下形式的矩阵:

col1 col2

1    2   
1    2    
1    2   
1    2   
1    2
2    5
2    5
2    5
3    7
3    7
3    7
3    7
3    7
3    7
3    7
3    7
4    2 
4    2 
4    2

我想根据 'col1' 选择所有唯一行。

在这种情况下,它将是 col1 中每个唯一值的第一行:

子集:

col1   col2
1      2 
2      5
3      7
4      2

这是我尝试过的:

https://dl.dropbox.com/u/22681355/matrix.csv
mat<-read.csv("matrix.csv")
sub<-unique(mat$V1)
subset(mat, mat==c(sub)

它吐出的东西比我预期的要多得多,我收到以下错误消息:

警告信息: 在联系人$V1 == c(g) 中: 较长的对象长度不是较短对象长度的倍数

【问题讨论】:

  • 既然要问这个问题,那我先说:你试过什么?您是否遇到了特定的代码问题?

标签: r


【解决方案1】:

你可以使用unique函数:

unique(mat$V1) # and not matrix$v1
[1]   44  281 1312

你也可以写

unique(mat)

它会给你独特的线条(我在你的文件上试过)。

如果你想选择V1s 值,你可以这样做:

> mat[!duplicated(mat$V1), ]
       X   V1 V2 V3 V4  V5 V6 V7 V8 V9 V10
1   1547   44 14  1  2 100 17  0  0  0   0
23  5385  281 67  2 10 100 10  0  0  0   0
33 17347 1312  1  2  6 100  8  0  0  0   0

【讨论】:

  • 那行不通,见上
  • @user1723765。如果你有一个像你说的那样的矩阵,它会起作用。原来你有一个data.frame。试试unique(as.matrix(mat))
  • 这仅从第一列中选​​择唯一值,但我希望为每个唯一案例选择整行
  • @user1723765 是的,mat$v1 不是 matrix$V1,我使用了你的文件。
  • 唯一的必须用 MARGIN = 1 调用
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-04-20
  • 2020-02-08
  • 2016-01-28
  • 2013-11-24
  • 2013-08-16
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多