J'ai un grand ensemble de données (202k points). Je sais qu'il y a 8 valeurs sur 0.5. Je veux sous-ensemble sur ces lignes. Comment puis-je trouver/retourner une liste les numéros de lignes où les valeurs sont> 0,5?Comment trouver les valeurs de crête/numéro de ligne?
Répondre
Si l'ensemble de données est un vecteur nommé x
:
(1:length(x))[x > 0.5]
Si l'ensemble de données est une data.frame ou d'une matrice nommée x
et la variable d'intérêt est dans la colonne j
:
(1:nrow(x))[x[,j] > 0.5]
Mais si vous voulez juste trouver le sous-ensemble et ne pas vraiment besoin des numéros de ligne, utilisez
subset(x, x > 0.5)
pour un vecteur et
subset(x, x[,j] > 0.5)
pour une matrice ou data.frame.
Merci tonnes! ça a fait l'affaire. J'ai fini par comprendre moi-même avant de découvrir que ce commentaire a été posté, mais c'est exactement ce que j'ai fait. –
Voici quelques données factices:
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)
qui ressemble à:
> 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
Et voici l'index logique de ligne,
index <- (rowSums(D>0.5))>=1
Vous pouvez l'utiliser pour extraire les lignes que vous vouloir:
PeakRows <- D[index,]
Ce qui ressemble à ceci:
> PeakRows
[,1] [,2] [,3] [,4]
[1,] 0.6 0.2 0.23 0.2
[2,] 0.1 0.1 0.80 0.2
which(x > 0.5)
En utilisant l'argument arr.ind=TRUE
avec which
est un excellent moyen pour trouver les numéros de ligne (ou colonne) où une condition est 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
avec arr.ind=TRUE
renvoie les indices de tableau où la condition est TRUE
which(df > 0.5, arr.ind=TRUE)
row col
[1,] 1 1
[2,] 4 3
de sorte que le sous-ensemble devient
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
Vous avez pris la balise R off. Dans quelle langue travaillez-vous? La question ne peut pas être répondue sans une certaine indication de l'environnement. –