Données de sous-ensemble basées sur la correspondance partielle des noms de colonnes
J'ai besoin d'un sous-ensemble de df pour inclure certaines chaînes. Certains de ces sont pleins de noms de colonnes, et le suivant fonctionne très bien:
testData[,c("FullColName1","FullColName2","FullColName3")]
Mon problème est que j'ai besoin de développer ce qui comprend également les noms de colonnes qui contiennent des chaînes de caractères spécifiques qui peuvent partiellement correspondre à certains autres noms de colonne. Ces chaînes inclure des lettres et des symboles:
"PartString1()","PartString2()"
J'ai essayé de mettre des caractères génériques autour de ces. (Je l'ai indiqué ci-dessous, avec le préfixe "star" parce que le symbole "*" ne pas s'afficher correctement.)
testData[ ,c("FullColName1","FullColName2","FullColName3",
"starPartString1()star","starPartString2()star")]
Mais j'obtiens un message d'erreur: undefined colonnes sélectionnées. Je ne peux pas savoir si ou comment j'ai besoin de grep pour faire ce travail.
source d'informationauteur user3614783
Vous devez vous connecter pour publier un commentaire.
Vous avez mentionné que vous cherchez peut-être des symboles, donc, pour cet exemple, nous pouvons utiliser
[[:punct:]]
que notre expression régulière. Cela permettra de trouver toutes les cordes avec les symboles de ponctuation dans les noms de colonnes.Cette dernière partie illustre simplement une autre façon de le faire avec d'autres fonctions de traitement de chaîne de
stringr
AJOUTER par OPs commentaire
à obtenir soit des sous-chaînes
ring1()
ouring2()
le nom de vecteurVous pouvez utiliser
grep
de trouver des indices de noms de colonnes avec correspondance partielle à un modèle particuliersupposons que le motif que vous voulez de match est "JAMBON", ainsi que certains noms de colonne ("SP500 TR" "NOUS 10Y TR" "NOUS 3m TR")
vous pouvez spécifier plusieurs modèles à l'aide d',
grep("pattern1 | pattern2 ", colnames(data))
Vous pouvez utiliser
grepl
pour une recherche par nom de colonne. Il renvoie à une logique vecteur indiquant les matchs.Voici un exemple:
grepl
vérifier pour voir si le motif est présent partout dans le nom, donc un générique n'est pas nécessaire.