どのように私は、ピーク値/行番号を見つけるのですか?

StackOverflow https://stackoverflow.com/questions/1576201

  •  21-09-2019
  •  | 
  •  

質問

私は、大規模なデータセット(202Kポイント)を持っています。私は8つの値が0.5の上にあることを知っています。私はそれらの行にサブセットたい。

は、私が見つけるにはどうすればよい/>値は、行番号0.5をリストを返す?

役に立ちましたか?

解決

データセットは、ベクトルの名前xの場合:

(1:length(x))[x > 0.5]

データセットがdata.frameや行列の名前xで、関心の変数が列jにある場合:

(1:nrow(x))[x[,j] > 0.5]

しかし、あなただけのサブセットを見つけたいと本当に必要としない場合は、行番号、使用

subset(x, x > 0.5)
ベクターは、

subset(x, x[,j] > 0.5)

マトリックス又はdata.frameための

他のヒント

which(x > 0.5)

ここではいくつかのダミーデータがあります:

D<-matrix(c(0.6,0.1,0.1,0.2,0.1,0.1,0.23,0.1,0.8,0.2,0.2,0.2),nrow=3)

はどのようになります。

> D
     [,1] [,2] [,3] [,4]
[1,]  0.6  0.2 0.23  0.2
[2,]  0.1  0.1 0.10  0.2
[3,]  0.1  0.1 0.80  0.2
ここで

と論理行インデックスです、

index <- (rowSums(D>0.5))>=1

あなたがしたい行を抽出するためにそれを使用することができます:

PeakRows <- D[index,]

どの次のようになります:

> PeakRows
     [,1] [,2] [,3] [,4]
[1,]  0.6  0.2 0.23  0.2
[2,]  0.1  0.1 0.80  0.2

arr.ind=TRUEと引数whichを使用する行(または列)を見つけるための素晴らしい方法である条件はTRUEある数字、

df <- matrix(c(0.6,0.2,0.1,0.25,0.11,0.13,0.23,0.18,0.21,0.29,0.23,0.51), nrow=4)

#      [,1] [,2] [,3]
# [1,] 0.60 0.11 0.21
# [2,] 0.20 0.13 0.29
# [3,] 0.10 0.23 0.23
# [4,] 0.25 0.18 0.51

which arr.ind=TRUEと条件はTRUE

は、配列のインデックスを返します
which(df > 0.5, arr.ind=TRUE)
     row col
[1,]   1   1
[2,]   4   3

のサブセットとなるように

df[-which(df > 0.5, arr.ind=TRUE)[, "row"], ]

#      [,1] [,2] [,3]
# [1,]  0.2 0.13 0.29
# [2,]  0.1 0.23 0.23
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top