Comment sélectionner les données R.lignes de table basées sur la correspondance de substring (comme la SQL))
j'ai une donnée.table avec une colonne de caractères, et veulent sélectionner seulement les lignes qui contiennent une sous-couche en elle. Équivalent à SQL WHERE x LIKE '%substring%'
E. G.
> Months = data.table(Name = month.name, Number = 1:12)
> Months["mb" %in% Name]
Empty data.table (0 rows) of 2 cols: Name,Number
Comment choisir seulement les lignes où le nom contient"mb"?
2 réponses
data.table
possède une fonction like
.
Months[like(Name,"mb")]
Name Number
1: September 9
2: November 11
3: December 12
Ou, %like%
ressemble plus belle :
> Months[Name %like% "mb"]
Name Number
1: September 9
2: November 11
3: December 12
notez que %like%
et like()
utilisent grepl
(renvoie le vecteur logique) plutôt que grep
(renvoie des emplacements entiers). C'est ainsi qu'il peut être combiné avec d'autres conditions logiques :
> Months[Number<12 & Name %like% "mb"]
Name Number
1: September 9
2: November 11
et vous obtenez la puissance de recherche d'expression régulière (pas seulement % ou * joker), trop.
l'opérateur %in%
ne fait pas d'appariement partiel de chaîne
il est utilisé pour trouver si des valeurs existent dans un autre ensemble de valeurs i.e. "a" %in% c("a","b","c")
pour faire une correspondance partielle de chaîne de caractères, vous devez utiliser la fonction grep()
.
Vous pouvez utiliser le grep
pour retourner un index de toutes les colonnes avec "mb"
. Puis sous-ensemble des lignes par cet index
Months[grep("mb", Name)] # data.table syntax slightly easier