Publié le :
ETL CREATION_INTERNE

Reformatage et normalisation de listes de covariables

En attente de validation
Ce script lit des définitions d'analyses cliniques contenant des listes de covariables brutes. Il éclate ces listes (parsing) pour traiter chaque covariable individuellement (attribution de types), les trie, puis les réassemble en une chaîne de caractères normalisée pour chaque analyse.
Analyse des données

Type : CREATION_INTERNE


Les données sont créées directement dans le script via une étape DATALINES dans la table 'cov0'.

1 Bloc de code
DATA STEP Data
Explication :
Création de la table initiale contenant les noms des analyses d'efficacité et les listes brutes de covariables associées.
Copié !
1DATA cov0;
2INPUT efficacy $ 1-51
3 covlist_orig $ 52 - 110;
4 covlist_orig=compress(covlist_orig);
5DATALINES;
6Rate of COPD Exacerbation FEV1POST, LBASEEOS, BASEEXAC, REGION, ICSUSE
7Time to first COPD Exacerbation FEV1POST, LBASEEOS, BASEEXAC, REGION, ICSUSE
8/* ... (données tronquées pour lisibilité) ... */
9FEV1 AUC0-4 BASE, LBASEEOS, PBREV, ICSUSE
10;
11RUN;
2 Bloc de code
DATA STEP Data
Explication :
Transformation de la structure 'large' vers 'longue'. La boucle parse la chaîne 'covlist_orig' pour extraire chaque covariable dans une nouvelle observation. Un type est assigné conditionnellement (1 ou 2) selon le nom de la covariable.
Copié !
1DATA cov1 (drop=i);
2 SET cov0;
3
4 analysis=_n_;
5 
6 i=1;
7
8 DO while(scan(covlist_orig, i, ',') ^= ' ');
9 cov = strip(scan(covlist_orig, i, ','));
10
11 IF cov in ('BASEEXAC' 'ICSUSE' 'REGION') THEN type=2;
12 ELSE type=1;
13
14 i+1;
15 OUTPUT;
16 END;
17RUN;
3 Bloc de code
PROC SORT
Explication :
Tri des covariables par identifiant d'analyse, puis par type calculé précédemment et enfin par nom de covariable.
Copié !
1PROC SORT DATA=cov1;
2 BY analysis type cov;
3RUN;
4 Bloc de code
PROC FREQ
Explication :
Analyse de fréquence simple pour lister les occurrences de chaque covariable individuelle extraite.
Copié !
1PROC FREQ DATA=cov1;
2 tables cov;
3RUN;
5 Bloc de code
DATA STEP Data
Explication :
Reconstruction de la liste de covariables (transformation inverse vers structure 'large'). Utilise RETAIN et CATX pour concaténer les covariables triées en une seule chaîne par analyse.
Copié !
1DATA covlist;
2 SET cov1;
3 BY analysis;
4 LENGTH covlist $ 100;
5
6 retain covlist;
7
8 IF first.analysis THEN call missing(covlist);
9 covlist=catx(', ', covlist, cov);
10
11 IF last.analysis;
12RUN;
6 Bloc de code
PROC PRINT
Explication :
Affichage de la table finale contenant l'identifiant de l'analyse et la liste de covariables reconstruite et triée.
Copié !
1 
2PROC PRINT
3DATA=covlist;
4var analysis covlist;
5RUN;
6 
7 Bloc de code
PROC FREQ
Explication :
Rapport final croisant la liste reconstruite, l'identifiant d'analyse et l'efficacité pour vérification.
Copié !
1 
2PROC FREQ
3DATA=covlist;
4 
5tables covlist*analysis*efficacy/list missing nopercent;
6RUN;
7 
Ce matériel est fourni "tel quel" par We Are Cas. Il n'y a aucune garantie, expresse ou implicite, quant à la qualité marchande ou à l'adéquation à un usage particulier concernant le matériel ou le code contenu dans les présentes. We Are Cas n'est pas responsable des erreurs dans ce matériel tel qu'il existe maintenant ou existera, et We Are Cas ne fournit pas de support technique pour celui-ci.
Banner
Le Conseil de l'Expert
Expert
Stéphanie
Spécialiste Machine Learning et IA.
« Ce type de programme est le moteur invisible des « macros-pilotes » de haut niveau. Pour optimiser encore ce flux, je recommanderais d'exporter la table covlist finale vers une table de paramètres globale. Cela permettrait d'appeler dynamiquement la macro-variable &covlist dans vos procédures statistiques, garantissant qu'aucune modification manuelle n'est effectuée entre la spécification et l'exécution. »