2017-07-28 1 views
0

Je dois renommer des centaines de variables dans un ensemble de données et je cherche la manière la plus efficace de le faire. Lorsque les données brutes sont importées, SAS génère des noms de variables génériques comme "VarX", et dans R il s'agit simplement de "VX". Mon entreprise passe de SAS à R, et l'ancien code SAS ressemblait à ceci: rename var23-var150=NRx1-NRx128; Cela renomme "var23" en "NRx1", puis "var24" en "NRx2", et ainsi de suite. C'était un raccourci très efficace dans SAS. Je sais que je peux utiliser quelque chose comme names(data)[x:y] = c("NRx1","NRx"2,etc) pour lire de la colonne x à la colonne y, en renommant chaque variable en cours de route. Cela signifie que je devrais écrire toutes les variables NRx et cela me semble être une perte de temps.Renommer plusieurs variables de manière séquentielle dans R

Theres également un autre ensemble de variables après le NRx, pour lequel le code SAS ressemblait à ceci: rename var151-var278=TRx1-TRx128;. Dans l'ensemble je dois renommer 250 variables et j'ai besoin d'un moyen efficace d'écrire ce code. Je suis assez nouveau à R, donc tous les conseils et raccourcis sont appréciés. Merci d'avance pour votre aide!

+3

Vous pouvez utiliser 'paste0' peut-être:' names (données) [x: y] = paste0 ("NRx", 1: 128) '. – lmo

+0

En supposant que ces variables stockent le même type de données et sont liées, vous devriez probablement remodeler au format long plutôt que d'encoder les données dans les noms de colonnes. Cet article a une discussion sur le type de formatage qui fonctionne bien dans R, assez similaire à SQL https://www.jstatsoft.org/article/view/v059i10 – Frank

Répondre

1

Je pense que votre approche initiale fonctionne très bien, mais plutôt que de taper tous les nouveaux noms, juste créer un vecteur simple des nouveaux noms souhaités:

names(data)[x:y] = paste0("NRx", 1:128) 

Vous pouvez facilement modifier ce qui se passe entre le " et bien sûr le nombre final pour répondre à vos besoins. Le 0 dans paste0 signifie qu'il n'y a pas d'espace dans votre nom de variable.

+0

Cela a fonctionné parfaitement! Je vous remercie. –