Sous-ensemble de données pour contenir uniquement les colonnes dont les noms correspondent à une condition
Est-il un moyen pour moi de sous-ensemble de données de base sur les noms de colonne en commençant par une chaîne de caractères? J'ai quelques colonnes qui sont comme des ABC_1 ABC_2 ABC_3
et certaines, comme la XYZ_1, XYZ_2,XYZ_3
disons.
Comment puis-je sous-ensemble de mon df
basée uniquement sur les colonnes contenant les au-dessus des portions de texte (disons, ABC
ou XYZ
)? Je peux utiliser des indices, mais les colonnes sont trop dispersés dans les données et ça devient trop dur à coder.
Aussi, je veux seulement inclure les lignes de chacun de ces colonnes où leur valeur est >0
ainsi, si l'un des 6
colonnes ci-dessus a une 1
dans la ligne, il fait une coupe dans mon dernier bloc de données.
- Quelle langue?!
R
? Ajoutez le tag ou pas-une suite de R va le voir. Veuillez donner un exemple reproductible, c'est à dire la structure de votre dataframe, de préférencedput( head( df ) )
, ou à tout le moins,str( df )
.
Vous devez vous connecter pour publier un commentaire.
Essayer
grepl
sur les noms de vosdata.frame
.grepl
correspond à une expression régulière pour une cible et renvoieTRUE
si une correspondance est trouvée etFALSE
autrement. La fonction vectorielle de sorte que vous pouvez passer d'un vecteur de chaînes de match et vous obtiendrez un vecteur de valeurs booléennes retourné.Exemple
Pour répondre à la deuxième partie, je ferais le sous-ensemble de données.cadre et ensuite en faire un vecteur d'indices de lignes de garder une logique vecteur) comme ça...
regular expression
donc oui. Lire?regexpr
Pour obtenirXYZ
ainsi de la chaîne d'ensemble dans le cadre de l'expresison comme ça...grepl( "ABC|XYZ" , names( df ) )
grepl()
commedata <- data [, !grepl("Unique-",names(data))]
de supprimer la colonne où la colonne nom commence parUnique-
. Je vois quegrepl()
ajoute en double nom de colonne avec.1
,.2
,.3
etc. Est-il possible d'utilisergrepl()
sans affecter le nom de la colonne, même si il y a des doublons dans le bloc de données?Vous pouvez également utiliser
starts_with
etdplyr
'sselect()
comme suit:À l'aide de dplyr vous pouvez:
Seulement en cas de
data.table
les utilisateurs, les ouvrages suivants, pour moi:Cela a fonctionné pour moi: