Das Skript läuft in mehreren Schritten ab. Zuerst wird eine Tabelle 'Test_Matrix' mit grundlegenden Parametern für drei Lieferanten über 12 Monate erstellt. Anschließend wird diese Tabelle zu einer Tabelle 'RECORDS' erweitert, um einzelne Testeinheiten zu simulieren. Der Hauptschritt in der Tabelle 'Import_This' generiert detaillierte Testdaten (Widerstand, Verzögerung, Defekte) unter Verwendung von Zufallszahlengenerierungsfunktionen (RANNOR, RANPOI), um eine statistische Verteilung zu simulieren. Schließlich bereinigt das Skript die Zwischentabellen, exportiert das Endergebnis in eine CSV-Datei und importiert es zur Überprüfung erneut.
Datenanalyse
Type : CREATION_INTERNE
Alle Daten werden synthetisch innerhalb des Skripts generiert. Es werden keine externen Datenquellen gelesen. Die Generierung beginnt mit einer DO-Schleife, um eine Parametertabelle zu erstellen, die dann erweitert und mit Zufallsdaten angereichert wird, um einen realen Prozess zu simulieren.
1 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP-Block initialisiert die Tabelle 'Test_Matrix'. Er generiert in einer Schleife die Simulationsparameter (Num, Mean, Sigma usw.) für 3 verschiedene Lieferanten ('Vendor') über einen Zeitraum von 12 Monaten.
Erklärung : Dieser Block modifiziert die Tabelle 'Test_Matrix', indem er die Werte der Variablen 'Mean' und 'Sigma' rundet. Anschließend wird eine PROC SORT verwendet, um die Daten nach Lieferant und Monat zu sortieren, als Vorbereitung für die folgenden Schritte.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung : Dieser DATA STEP liest die Tabelle 'Test_Matrix' und verwendet sie, um die Tabelle 'RECORDS' zu generieren. Eine Schleife 'DO Unit=1 TO Num' wird verwendet, um die Datensätze zu duplizieren und so eine Zeile für jede zu testende 'Einheit' zu erstellen.
Kopiert!
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 Codeblock
DATA STEP Data
Erklärung : Dies ist der Hauptblock zur Datengenerierung. Er liest die Tabelle 'RECORDS' und erstellt 'Import_This'. Testvariablen wie 'Resistance', 'Delay' und 'Defects' werden mithilfe von Zufallszahlengenerierungsfunktionen (RANNOR, RANPOI) basierend auf den definierten Parametern simuliert. Formate werden angewendet und Zwischenvariablen am Ende gelöscht.
Kopiert!
%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 Codeblock
PROC DATASETS
Erklärung : Dieser Block verwendet die PROC DATASETS Prozedur, um nicht mehr benötigte Zwischenarbeits-Tabellen ('Test_Matrix' und 'Records') zu löschen, um die Arbeitsumgebung zu bereinigen.
Erklärung : Dieser finale Block exportiert die Tabelle 'Import_This' mithilfe von PROC EXPORT in eine CSV-Datei. Der Pfad der Ausgabedatei hängt von der Makrovariablen '&JES' ab. Unmittelbar danach wird PROC IMPORT verwendet, um dieselbe CSV-Datei zu lesen und eine neue SAS-Tabelle namens 'Import' zu erstellen, was einen Export-Import-Zyklus demonstriert.
Dieses Material wird von We Are Cas "wie besehen" zur Verfügung gestellt. Es gibt keine ausdrücklichen oder stillschweigenden Garantien hinsichtlich der Marktgängigkeit oder Eignung für einen bestimmten Zweck in Bezug auf die hierin enthaltenen Materialien oder Codes. We Are Cas ist nicht verantwortlich für Fehler in diesem Material, wie es jetzt existiert oder existieren wird, noch bietet We Are Cas technischen Support dafür an.
SAS und alle anderen Produkt- oder Dienstleistungsnamen von SAS Institute Inc. sind eingetragene Marken oder Marken von SAS Institute Inc. in den USA und anderen Ländern. ® zeigt die Registrierung in den USA an. WeAreCAS ist eine unabhängige Community-Site und nicht mit SAS Institute Inc. verbunden.
Diese Website verwendet technische und analytische Cookies, um Ihre Erfahrung zu verbessern.
Mehr erfahren.