質問
私は、大規模なデータセット(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
所属していません StackOverflow