La sélection de lignes où une colonne a une chaîne de caractères comme 'hsa..' (partielle de la chaîne de match)
J'ai un 371MB fichier texte contenant des micro ARN de données. Essentiellement, je voudrais sélectionner uniquement les lignes qui ont des informations sur les microarn.
J'ai lu dans le fichier à l'aide d'une lecture.table. Habituellement, j'avais à accomplir ce que je veux avec sqldf - si elle avait un "like" de la syntaxe (select * from <> où miRNA comme 'ash'). Malheureusement - sqldf ne prend pas en charge que de la syntaxe.
Comment puis-je le faire dans la R? J'ai regardé autour de stackoverflow et de ne pas voir un exemple de comment je peux faire une chaîne partielle match. J'ai même installé le stringr paquet - mais il n'ont pas tout à fait ce dont j'ai besoin.
Ce que je voudrais faire, c'est quelque chose comme cela - où toutes les lignes où hsa-* sont sélectionnés.
selectedRows <- conservedData[, conservedData$miRNA %like% "hsa-"]
qui, évidemment, n'est pas la syntaxe correcte.
Quelqu'un peut-il m'aider avec cela? Merci beaucoup pour la lecture.
Asda
- Pouvez-vous poster quelques lignes de vos données, de préférence en utilisant quelque chose comme
dput(head(conservedData))
.
Vous devez vous connecter pour publier un commentaire.
Je remarque que vous mentionnez une fonction
%like%
dans votre approche actuelle. Je ne sais pas si c'est une référence à la%like%
de données".tableau", mais si elle l'est, vous pouvez certainement l'utiliser comme suit.Remarque que l'objet n'a pas à être un
data.table
(mais rappelez-vous aussi que subsetting approches pourdata.frame
s etdata.table
s ne sont pas identiques):Si c'est ce que vous avez eu, alors peut-être vous avez eu tout mélangé de ligne et de colonne positions pour subsetting de données.
Si vous ne voulez pas charger un package, vous pouvez essayer d'utiliser
grep()
à la recherche de la chaîne que vous êtes correspondant. Voici un exemple avec lemtcars
dataset, où nous sommes correspondance de toutes les lignes où les noms de ligne comprend "Mercenaire":Et, autre exemple, à l'aide de la
iris
dataset pour la recherche de la chaîne deosa
:Pour votre problème, essayez:
grep
prend en charge les expressions régulières, de sorte que vous pouvez grep pour^hsa-
à la place.grep
vient de l'ed de commande g/re/p (global / expression régulière / impression), et il révèle son pouvoir réel de la maîtrise de l'expression régulière-fu ;-): en.wikipedia.org/wiki/GrepEssayer
str_detect()
de la stringr paquet, qui détecte la présence ou l'absence d'un motif dans une chaîne de caractères.Ici est une approche qui intègre également la
%>%
pipe etfilter()
de la dplyr package:Cela permet de filtrer l'échantillon de CO2 de l'ensemble de données (qui vient avec R) pour les lignes où le Traitement variable contient la sous-chaîne "non". Vous pouvez ajuster si
str_detect
trouve fixe les matchs ou utilise une regex consultez la documentation du stringr paquet.myDataFrame[str_detect(myDataFrame$key, myKeyPattern),]
LIKE
devraient travailler en sqlite:require()
icirequire
fonction.