Le script procède en plusieurs étapes. D'abord, il crée une table 'Test_Matrix' avec des paramètres de base pour trois fournisseurs sur 12 mois. Il étend ensuite cette table en une table 'RECORDS' pour simuler des unités de test individuelles. L'étape principale, dans la table 'Import_This', génère des données de test détaillées (résistance, délai, défauts) en utilisant des fonctions de génération de nombres aléatoires (RANNOR, RANPOI) pour simuler une distribution statistique. Enfin, le script nettoie les tables intermédiaires, exporte le résultat final vers un fichier CSV et le réimporte pour vérification.
Analyse des données
Type : CREATION_INTERNE
Toutes les données sont générées de manière synthétique à l'intérieur du script. Aucune source de données externe n'est lue. La génération commence par une boucle DO pour créer une table de paramètres, qui est ensuite étendue et enrichie avec des données aléatoires pour simuler un processus réel.
1 Bloc de code
DATA STEP Data
Explication : Ce bloc DATA STEP initialise la table 'Test_Matrix'. Il génère en boucle les paramètres de simulation (Num, Mean, Sigma, etc.) pour 3 fournisseurs ('Vendor') différents sur une période de 12 mois.
Explication : Ce bloc modifie la table 'Test_Matrix' en arrondissant les valeurs des variables 'Mean' et 'Sigma'. Il est suivi d'un PROC SORT pour trier les données par fournisseur et par mois, en préparation pour les étapes suivantes.
Copié !
DATA Test_Matrix; SET Test_Matrix;
Mean = ROUND(Mean, .1);
Sigma = ROUND(Sigma, .1);
RUN;
PROC SORT DATA=Test_Matrix; BY Vendor Month; RUN;
1
DATA Test_Matrix; SET Test_Matrix;
2
Mean = ROUND(Mean, .1);
3
Sigma = ROUND(Sigma, .1);
4
RUN;
5
PROC SORTDATA=Test_Matrix; BY Vendor Month; RUN;
3 Bloc de code
DATA STEP Data
Explication : Ce DATA STEP lit la table 'Test_Matrix' et l'utilise pour générer la table 'RECORDS'. Une boucle 'DO Unit=1 TO Num' est utilisée pour dupliquer les enregistrements et ainsi créer une ligne pour chaque 'unité' à tester.
Copié !
DATA RECORDS; SET TEST_MATRIX;
DO Unit=1 TO Num;
OUTPUT;
END;
RUN;
1
DATA RECORDS; SET TEST_MATRIX;
2
DO Unit=1 TO Num;
3
OUTPUT;
4
END;
5
RUN;
4 Bloc de code
DATA STEP Data
Explication : Ceci est le bloc principal de génération de données. Il lit la table 'RECORDS' et crée 'Import_This'. Des variables de test comme 'Resistance', 'Delay' et 'Defects' sont simulées à l'aide de fonctions de nombres aléatoires (RANNOR, RANPOI) basées sur les paramètres définis. Des formats sont appliqués et des variables intermédiaires sont supprimées à la fin.
Copié !
%let D=500; %let D=7500; %LET D = 50000; %let B = 1;
DATA Import_This; SET RECORDS; retain SEED0 SEED1 SEED2 SEED3;
FORMAT Test_Time $25. Delay $12. Del 8.0 Resistance 8.2 Result $8. Fail 8.0;
FORMAT TestTime DATETIME20. TestDate MMDDYY10.;
TestTime=MDY(Month, min(30,Unit), 2008)*60*60*24;
TestDate=DATEPART(TestTime);
Test_Time=PUT(TestTime, DateTime20.);
IF Vendor="Empirical Engineering" THEN Test_Time=PUT(TestDate, MMDDYY10.);
if _N_=1 then do; SEED0=12345; SEED1=54321; SEED2=15243; SEED3=34251; END;
CALL RANNOR(SEED0, Z);
Resistance = Mean + Sigma*Z;
FORMAT Result $8.;
Result = "Pass"; Fail=0;
IF Resistance < 12.5 THEN Result="Fail Low";
IF Resistance > 22.5 THEN Result="Fail Hi";
IF Result ne "Pass" THEN Fail=1;
CALL RANNOR(SEED1, De);
Del = DA + DB*Resistance + .2*Resistance**2 + D_Sig*De;
Delay=PUT(Del, 8.0);
IF Vendor="Duality Logic" THEN DO;
IF Month=12 AND Unit>20 THEN Delay="N/A";
END;
IF Vendor="Empirical Engineering" THEN DO;
IF Month=4 AND Unit>10 THEN Delay="N/A";
END;
FORMAT Defects 8.0;
CALL RANPOI(Seed3, Rate, Defects);
DROP Mean Sigma Z Num DA DB D_Sig De Rate
SEED0 SEED1 SEED2 SEED3
TestTime TestDate Del Defects;
RUN;
1
%let D=500; %let D=7500; %LET D = 50000; %let B = 1;
2
DATA Import_This; SET RECORDS; retain SEED0 SEED1 SEED2 SEED3;
3
FORMAT Test_Time $25. Delay $12. Del 8.0 Resistance 8.2RESULT $8. Fail 8.0;
4
FORMAT TestTime DATETIME20. TestDate MMDDYY10.;
5
TestTime=MDY(Month, min(30,Unit), 2008)*60*60*24;
6
TestDate=DATEPART(TestTime);
7
Test_Time=PUT(TestTime, DateTime20.);
8
IF Vendor="Empirical Engineering"THEN Test_Time=PUT(TestDate, MMDDYY10.);
9
IF _N_=1THENDO; SEED0=12345; SEED1=54321; SEED2=15243; SEED3=34251; END;
10
CALL RANNOR(SEED0, Z);
11
Resistance = Mean + Sigma*Z;
12
13
14
15
16
FORMATRESULT $8.;
17
RESULT = "Pass"; Fail=0;
18
IF Resistance < 12.5THENRESULT="Fail Low";
19
IF Resistance > 22.5THENRESULT="Fail Hi";
20
IFRESULT ne "Pass"THEN Fail=1;
21
CALL RANNOR(SEED1, De);
22
Del = DA + DB*Resistance + .2*Resistance**2 + D_Sig*De;
23
Delay=PUT(Del, 8.0);
24
IF Vendor="Duality Logic"THENDO;
25
IF Month=12 AND Unit>20THEN Delay="N/A";
26
END;
27
IF Vendor="Empirical Engineering"THENDO;
28
IF Month=4 AND Unit>10THEN Delay="N/A";
29
END;
30
31
32
FORMAT Defects 8.0;
33
CALL RANPOI(Seed3, Rate, Defects);
34
DROP Mean Sigma Z Num DA DB D_Sig De Rate
35
SEED0 SEED1 SEED2 SEED3
36
TestTime TestDate Del Defects;
37
RUN;
5 Bloc de code
PROC DATASETS
Explication : Ce bloc utilise la procédure PROC DATASETS pour supprimer les tables de travail intermédiaires ('Test_Matrix' et 'Records') qui ne sont plus nécessaires, afin de nettoyer l'environnement de travail.
Explication : Ce bloc final exporte la table 'Import_This' vers un fichier CSV en utilisant PROC EXPORT. Le chemin du fichier de sortie dépend de la macro-variable '&JES'. Immédiatement après, PROC IMPORT est utilisé pour lire ce même fichier CSV et créer une nouvelle table SAS nommée 'Import', démontrant un cycle d'exportation-importation.
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.
SAS et tous les autres noms de produits ou de services de SAS Institute Inc. sont des marques déposées ou des marques de commerce de SAS Institute Inc. aux États-Unis et dans d'autres pays. ® indique un enregistrement aux États-Unis. WeAreCAS est un site communautaire indépendant et n'est pas affilié à SAS Institute Inc.
Ce site utilise des cookies techniques et analytiques pour améliorer votre expérience.
En savoir plus.