Renommer les Variables Indépendamment de son Nom dans le SAS
Permet de supposer que nous avons le dataset suivant:
ID Stress_Level Heart_Rate
1 5 10
2 7 12
3 9 16
Et le code serait d'utiliser pour renommer une variable serait:
data test1;
set test0;
rename Stress_Level=A Heart_Rate=B;
run;
Cependant, ce que je voudrais faire est de renommer les 2 colonnes sans l'aide de leurs noms. Est-il une "interne" SAS de commande qui traite de la variable en fonction de la colonne qui il est? Ainsi, par exemple Stress_Level qui est la 2ème colonne peut être considéré comme "COL2" ou quelque chose de similaire. Ainsi, le code serait:
data test1;
set test0;
rename COL2=A COL3=B;
run;
Où "COL2" serait toujours se référer à la deuxième colonne du jeu de données quel que soit son nom. Est-il direct ou peut-être un moyen indirect pour réaliser cela?
OriginalL'auteur Noob_Strider | 2015-03-12
Vous devez vous connecter pour publier un commentaire.
Je pense que le moyen le plus facile est de construire un changement de nom chaîne de requête à partir de la table de métadonnées DICTIONNAIRE.Les COLONNES (le point de vue de ce qui est SASHELP.VCOLUMN). Ceci est la colonne des noms et la position de toutes les tables dans active bibliothèques.
J'ai profité de la séquence ASCII (le
byte
fonction) pour renommer les colonnes A, B etc, évidemment vous vous souhaitez rencontrer des problèmes si il y a plus de 26 colonnes d'être renommé dans le tableau!Vous aurez également besoin d'ajuster la
varnum+63
calcul si vous vouliez démarrer à partir d'une colonne différente de 2.byte()
, jamais rencontré avant. Merci.OriginalL'auteur Longfish
Il ya un couple de façons dont vous pouvez faire cette.
La plus courte approche est probablement d'utiliser un tableau. Les seuls inconvénients sont que vous avez besoin de connaître le type des variables à l'avance et le nom de la première variable.
Si ils sont tous numériques comme dans votre exemple, les éléments suivants pourraient être utilisés:
Vous ne pouvez avoir qu'un seul type de variable dans un tableau, c'est un peu plus compliqué si ils ne sont pas tous numériques ou tous les caractères. En outre, vous aurez besoin de connaître le nom de la première variable et d'autres variables que vous souhaitez garder si vous ne voulez pas avoir des doublons de la deuxième et troisième variables.
Une approche plus rigoureuse consiste à utiliser les informations à partir d'un dictionnaire de table et une macro variable d'écrire votre renommer déclaration:
SAS stocke les informations sur les jeux de données dans des tables du dictionnaire, qui ont des vues disponibles dans la sashelp de la bibliothèque. Jetez un oeil à certains de la
sashelp.v*
tables de voir ce genre d'informations est disponible. Leproc sql
du côlon est utilisé pour stocker des valeurs dans une macro variable, qui peut ensuite être utilisé dans larename
déclaration.Je vous recommande la seconde approche, qui est beaucoup plus flexible et moins dépendante de la structure exacte de vos données. Il élargit également améliorée lorsque vous avez plus d'un couple de variables à renommer.
Enfin, si vous souhaitez apporter des modifications à un ensemble de données en place, vous pouvez prendre un coup d'oeil à l'aide de
proc datasets
(en combinaison avec le dictionnaire approche de table) pour faire le changement de nom, comme cela peut changer les noms de variable sans avoir à lire et à écrire chaque ligne de données.Très similaire en effet. J'ai toujours bien dommage que les piles ne peuvent pas être utilisés dans
drop/keep/rename
consolidés.OriginalL'auteur SRSwift