dataShaping

longToWide

Description

Remodèle une table contenant des enregistrements fins (longs) en une table contenant des enregistrements larges.

dataShaping.longToWide { attributes={{ format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer }, ...}, casOut={ caslib="string", compress=TRUE | FALSE, indexVars={"variable-name-1", ...}, label="string", lifetime=64-bit-integer, maxMemSize=64-bit-integer, memoryFormat="DVR" | "INHERIT" | "STANDARD", name="table-name", onDemand=TRUE | FALSE, promote=TRUE | FALSE, replace=TRUE | FALSE, replication=integer, tableRedistUpPolicy="DEFER" | "NOREDIST" | "REBALANCE", threadBlockSize=64-bit-integer, timeStamp="string", where={"string-1", ...} }, charSeparatorChar="variable-name", cumFreqName="variable-name", frequencyName="variable-name", groupIdName="variable-name", id={"variable-name-1", ...}, inputs={{ format="string", formattedLength=integer, label="string", name="variable-name", nfd=integer, nfl=integer }, ...}, journalTrace=TRUE | FALSE, keyModify={"string-1", ...}, max={"variable-name-1", ...}, maxPosition=integer, mean={"variable-name-1", ...}, min={"variable-name-1", ...}, nMiss={"variable-name-1", ...}, noPrefix=TRUE | FALSE, numSeparatorNum="variable-name", orderByTable={ caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1, ...}, groupByMode="NOSORT" | "REDISTRIBUTE", importOptions={fileType="string", ...}, name="table-name", onDemand=TRUE | FALSE, singlePass=TRUE | FALSE, vars={{...}}, where="where-expression", whereTable={{...}} }, range={"variable-name-1", ...}, sum={"variable-name-1", ...}, table={ caslib="string", computedOnDemand=TRUE | FALSE, computedVars={{...}}, computedVarsProgram="string", dataSourceOptions={key-1=any-list-or-data-type-1, ...}, groupBy={{...}}, groupByMode="NOSORT" | "REDISTRIBUTE", importOptions={fileType="string", ...}, name="table-name", onDemand=TRUE | FALSE, orderBy={{...}}, singlePass=TRUE | FALSE, vars={{...}}, where="where-expression", whereTable={{...}} } };
Paramètres
ParamètreDescription
attributesSpécifie les attributs de la variable.
casOutSpécifie les paramètres pour une table de sortie.
charSeparatorCharSpécifie un caractère ou une chaîne de caractères utilisée pour séparer les parties des noms de variables de casOut si les deux sont des chaînes CHAR ou VARCHAR.
cumFreqNameSpécifie le nom de la variable pour la fréquence cumulée dans la table casOut.
frequencyNameSpécifie le nom de la variable dans la table casOut qui contient les fréquences.
groupIdNameSpécifie la variable dans la table qui contient les identifiants de groupe (groupIds).
idSpécifie les variables d'ID à copier de la table vers la table casOut.
inputsSpécifie les variables d'entrée pour l'analyse.
journalTraceLorsqu'il est défini sur True, écrit des informations de traçage détaillées dans le journal SAS.
keyModifySpécifie si vous souhaitez que les valeurs de caractères dans les variables de la liste orderBy soient converties en majuscules (U), que les espaces consécutifs soient condensés en un seul espace (C), ou les deux.
maxSpécifie les variables pour lesquelles vous voulez la valeur maximale.
maxPositionSpécifie la valeur maximale de la variable de position. Les enregistrements dont la valeur de la variable de position est supérieure à la valeur de maxPosition sont ignorés.
meanSpécifie les variables pour lesquelles vous voulez la valeur moyenne.
minSpécifie les variables pour lesquelles vous voulez la valeur minimale.
nMissSpécifie les variables pour lesquelles vous voulez le nombre de valeurs manquantes.
noPrefixLorsqu'il est défini sur True, et si la même variable est spécifiée pour sum, min, max, nMiss, ou mean, alors les noms de variables dans la table casOut seront _sum_, _min_, _max_, etc., au lieu de, par exemple, foo_sum, foo_min.
numSeparatorNumSpécifie un caractère ou une chaîne de caractères utilisée pour séparer les parties des noms de variables de la table casOut si les deux sont numériques.
orderByTableSpécifie la table orderByTable, qui est obtenue en exécutant l'action groupBy ou groupByInfo.
rangeSpécifie les variables pour lesquelles vous voulez la plage des valeurs.
sumSpécifie les variables pour lesquelles vous voulez que les valeurs soient sommées.
tableSpécifie le nom de la table, la caslib et d'autres paramètres communs.
Préparation des Données Voir la fiche de ce code dataprep
Création des Données d'Exemple

Ce code crée une table CAS nommée 'long_data' qui servira de base pour les exemples de remodelage de données de format long à large.

Copié !
1DATA casuser.long_data;
2 DO group = 1 to 2;
3 DO i = 1 to 5;
4 INPUT col1 col2;
5 OUTPUT;
6 END;
7 END;
8 DATALINES;
91 2
103 4
115 6
127 8
139 10
1411 12
1513 14
1615 16
1717 18
1819 20
19;
20RUN;

Exemples

Cet exemple montre comment remodeler une table longue simple en une table large. Les valeurs de 'col1' et 'col2' deviendront de nouvelles variables dans la table de sortie, regroupées par la variable 'group'.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 dataShaping.longToWide RESULT=r /
3 TABLE={name='long_data', groupBy={'group'}},
4 id={'i'},
5 inputs={{name='col1'}, {name='col2'}},
6 casOut={name='wide_data', replace=TRUE};
7RUN;
8PRINT r.caslib r.name;
9RUN;
Résultat :
Une nouvelle table CAS nommée 'wide_data' est créée, où chaque groupe a un seul enregistrement large contenant les variables col1_1, col1_2, ..., col2_5.

Cet exemple utilise d'abord l'action 'groupBy' pour créer une table d'ordre ('groupByTable'). Ensuite, l'action 'longToWide' utilise cette table pour ordonner les données avant de les remodeler, assurant un ordre cohérent.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 SIMPLE.groupBy /
3 TABLE={name='long_data'},
4 aggregator='N',
5 inputs={{name='i'}},
6 casOut={name='groupByTable', replace=TRUE};
7 
8 dataShaping.longToWide RESULT=r /
9 TABLE={name='long_data', groupBy={'group'}},
10 id={'i'},
11 inputs={{name='col1'}, {name='col2'}},
12 orderByTable={name='groupByTable'},
13 casOut={name='wide_data_ordered', replace=TRUE};
14RUN;
15PRINT r.caslib r.name;
16RUN;
Résultat :
Crée une table large 'wide_data_ordered', avec des colonnes ordonnées selon les critères de la 'groupByTable'.

Cet exemple remodèle non seulement la table de format long à large, mais calcule également des statistiques agrégées (somme, moyenne, min, max) pour les variables 'col1' et 'col2' pour chaque groupe.

Code SAS® / CAS Code en attente de validation par la communauté
Copié !
1PROC CAS;
2 dataShaping.longToWide RESULT=r /
3 TABLE={name='long_data', groupBy={'group'}},
4 id={'i'},
5 inputs={{name='col1'}, {name='col2'}},
6 sum={'col1', 'col2'},
7 mean={'col1', 'col2'},
8 min={'col1', 'col2'},
9 max={'col1', 'col2'},
10 casOut={name='wide_data_stats', replace=TRUE};
11RUN;
12PRINT r.caslib r.name;
13RUN;
Résultat :
Crée une table 'wide_data_stats' qui contient non seulement les variables remodelées, mais aussi des colonnes supplémentaires pour la somme, la moyenne, le minimum et le maximum de 'col1' and 'col2' pour chaque groupe.

FAQ

Quel est l'objectif de l'action longToWide ?
Quels sont les paramètres essentiels pour utiliser l'action longToWide ?
Comment puis-je calculer des statistiques agrégées lors de la transformation de format long à large ?
À quoi sert le paramètre orderByTable ?