2

重複の可能性:
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)

それは私が得ると思っているよりもはるかに多く吐き出し、私はこのエラーメッセージを受け取ります:

警告メッセージ:contacts $ V1 == c(g):長いオブジェクトの長さは短いオブジェクトの長さの倍数ではありません

4

1 に答える 1

18

unique次の機能を使用できます。

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

あなたも書くことができます

unique(mat)

そしてそれはあなたにユニークな行を与えるでしょう(私はあなたのファイルでそれを試しました)。

sの値を選択する場合はV1、次のように実行できます。

> 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
于 2012-12-12T16:00:26.877 に答える