140.SAS CLINICAL ANALYSIS USING DATA, PROC MEANS, PROC FREQ, PROC UNIVARIATE, PROC CORR, PROC REPORT, PROC SQL, PROC SGPLOT, AND PROC EXPORT

SAS CLINICAL ANALYSIS USING DATA, PROC MEANS, PROC FREQ, PROC UNIVARIATE, PROC CORR, PROC REPORT, PROC SQL, PROC SGPLOT, AND PROC EXPORT


 /* Step 1: Creating the Clinical Trial Dataset */

DATA Clinical_Trials;

    LENGTH Trial_ID $10 Patient_ID $10 Gender $6 Drug_Name $15 Side_Effects $20 Outcome $10;

    FORMAT Age 8. Dosage_mg 8.2 Efficacy 8.2 BP_Change 8.2 Recovery_Time 8.2 Weight_Change 8.2 Heart_Rate 8.2 Cholesterol_Level 8.2;


    DO Trial_Index = 1001 TO 1005;

        Trial_ID = CATS("T", Trial_Index);


        DO Patient_Index = 2001 TO 2005; 

            Patient_ID = CATS("P", Patient_Index);


            Age = ROUND(18 + RANUNI(1234) * 62, 1); /* Age between 18 and 80 */


            Gender_Val = INT(RANUNI(1234) * 2) + 1;

            SELECT (Gender_Val);

                WHEN (1) Gender = "Male";

                WHEN (2) Gender = "Female";

                OTHERWISE Gender = "Unknown";

            END;


            /* Assigning Drug Name */

            Drug_Num = INT(RANUNI(1234) * 5) + 1;

            SELECT (Drug_Num);

                WHEN (1) Drug_Name = "DrugA";

                WHEN (2) Drug_Name = "DrugB";

                WHEN (3) Drug_Name = "DrugC";

                WHEN (4) Drug_Name = "DrugD";

                WHEN (5) Drug_Name = "DrugE";

                OTHERWISE Drug_Name = "Unknown";

            END;


            Dosage_mg = ROUND(50 + RANUNI(1234) * 250, 1); /* Dosage between 50 and 300mg */

            Efficacy = ROUND(RANUNI(1234) * 100, 1); /* Efficacy between 0-100% */


\

            Side_Num = INT(RANUNI(1234) * 6) + 1;

            SELECT (Side_Num);

                WHEN (1) Side_Effects = "None";

                WHEN (2) Side_Effects = "Nausea";

                WHEN (3) Side_Effects = "Dizziness";

                WHEN (4) Side_Effects = "Headache";

                WHEN (5) Side_Effects = "Fatigue";

                WHEN (6) Side_Effects = "Insomnia";

                OTHERWISE Side_Effects = "Unknown";

            END;


            BP_Change = ROUND(-15 + RANUNI(1234) * 30, 1); /* BP change between -15 and 15 */

            Recovery_Time = ROUND(5 + RANUNI(1234) * 30, 1); /* Recovery time between 5 and 35 days */

            Weight_Change = ROUND(-10 + RANUNI(1234) * 20, 1); /* Weight change between -10 and 10 kg */

            Heart_Rate = ROUND(60 + RANUNI(1234) * 40, 1); /* Heart rate between 60 and 100 bpm */

            Cholesterol_Level = ROUND(150 + RANUNI(1234) * 100, 1); /* Cholesterol level between 150 and 250 */


            IF Efficacy > 50 THEN Outcome = "Success";

            ELSE Outcome = "Failure";


            OUTPUT;

        END;

    END;

RUN;

PROC PRINT;RUN;


OUTPUT:

Obs Trial_ID Patient_ID Gender Drug_Name Side_Effects Outcome Age Dosage_mg Efficacy BP_Change Recovery_Time Weight_Change Heart_Rate Cholesterol_Level Trial_Index Patient_Index Gender_Val Drug_Num Side_Num
1 T1001 P2001 Male DrugB None Failure 33 74.00 26.00 -14.00 8.00 -1.00 66.00 154.00 1001 2001 1 2 1
2 T1001 P2002 Male DrugE Dizziness Success 46 292.00 74.00 -4.00 15.00 0.00 71.00 185.00 1001 2002 1 5 3
3 T1001 P2003 Male DrugA Headache Failure 34 228.00 0.00 12.00 12.00 6.00 66.00 162.00 1001 2003 1 1 4
4 T1001 P2004 Female DrugD Headache Success 51 187.00 98.00 -2.00 20.00 9.00 88.00 185.00 1001 2004 2 4 4
5 T1001 P2005 Female DrugA Headache Success 29 129.00 97.00 -6.00 25.00 1.00 88.00 210.00 1001 2005 2 1 4
6 T1002 P2001 Male DrugB Headache Success 33 232.00 92.00 6.00 6.00 4.00 74.00 186.00 1002 2001 1 2 4
7 T1002 P2002 Female DrugC Fatigue Success 50 91.00 83.00 -10.00 21.00 -2.00 96.00 177.00 1002 2002 2 3 5
8 T1002 P2003 Male DrugB Headache Failure 55 124.00 37.00 15.00 8.00 8.00 62.00 155.00 1002 2003 1 2 4
9 T1002 P2004 Female DrugE Insomnia Failure 67 153.00 1.00 14.00 7.00 9.00 95.00 167.00 1002 2004 2 5 6
10 T1002 P2005 Male DrugE Headache Success 69 77.00 75.00 14.00 27.00 -7.00 82.00 242.00 1002 2005 1 5 4
11 T1003 P2001 Male DrugE Fatigue Success 36 232.00 56.00 12.00 31.00 -7.00 76.00 195.00 1003 2001 1 5 5
12 T1003 P2002 Male DrugA None Success 33 240.00 61.00 1.00 10.00 -5.00 92.00 220.00 1003 2002 1 1 1
13 T1003 P2003 Female DrugE Insomnia Failure 78 162.00 48.00 -10.00 29.00 1.00 63.00 216.00 1003 2003 2 5 6
14 T1003 P2004 Male DrugD None Failure 64 266.00 6.00 -9.00 28.00 -8.00 79.00 158.00 1003 2004 1 4 1
15 T1003 P2005 Female DrugC Dizziness Failure 77 163.00 8.00 -8.00 20.00 5.00 90.00 239.00 1003 2005 2 3 3
16 T1004 P2001 Female DrugD Dizziness Success 23 147.00 84.00 8.00 19.00 4.00 87.00 228.00 1004 2001 2 4 3
17 T1004 P2002 Female DrugE Nausea Success 47 215.00 55.00 -4.00 9.00 0.00 61.00 214.00 1004 2002 2 5 2
18 T1004 P2003 Female DrugC Dizziness Failure 72 83.00 33.00 13.00 6.00 -2.00 68.00 155.00 1004 2003 2 3 3
19 T1004 P2004 Female DrugD Dizziness Success 56 175.00 53.00 4.00 32.00 5.00 72.00 203.00 1004 2004 2 4 3
20 T1004 P2005 Male DrugE Headache Failure 33 226.00 33.00 2.00 31.00 0.00 86.00 232.00 1004 2005 1 5 4
21 T1005 P2001 Male DrugB Insomnia Success 62 170.00 54.00 -13.00 20.00 -7.00 61.00 158.00 1005 2001 1 2 6
22 T1005 P2002 Male DrugA None Success 50 201.00 94.00 9.00 13.00 6.00 72.00 163.00 1005 2002 1 1 1
23 T1005 P2003 Male DrugA Nausea Failure 21 200.00 42.00 -6.00 14.00 1.00 65.00 243.00 1005 2003 1 1 2
24 T1005 P2004 Male DrugA Headache Success 25 244.00 96.00 11.00 22.00 -5.00 92.00 216.00 1005 2004 1 1 4
25 T1005 P2005 Male DrugE None Failure 68 274.00 22.00 1.00 8.00 -4.00 88.00 222.00 1005 2005 1 5 1


/* Step 2: Descriptive Statistics */

PROC MEANS DATA=Clinical_Trials N MEAN STD MIN MAX;

    VAR Age Dosage_mg Efficacy BP_Change Recovery_Time Weight_Change Heart_Rate Cholesterol_Level;

RUN;


OUTPUT:

                                                           The MEANS Procedure

Variable N Mean Std Dev Minimum Maximum
Age
Dosage_mg
Efficacy
BP_Change
Recovery_Time
Weight_Change
Heart_Rate
Cholesterol_Level
25
25
25
25
25
25
25
25
48.4800000
183.4000000
53.1200000
1.4400000
17.6400000
0.4400000
77.6000000
195.4000000
17.7766701
63.1116735
31.9600271
9.4959641
8.8028405
5.2605450
11.8392004
30.8963320
21.0000000
74.0000000
0
-14.0000000
6.0000000
-8.0000000
61.0000000
154.0000000
78.0000000
292.0000000
98.0000000
15.0000000
32.0000000
9.0000000
96.0000000
243.0000000


/* Step 3: Additional Summary Statistics */

PROC MEANS DATA=Clinical_Trials N MEDIAN Q1 Q3;

    VAR Age Dosage_mg Efficacy BP_Change Recovery_Time;

RUN;


OUTPUT:

                                                          The MEANS Procedure

Variable N Median Lower Quartile Upper Quartile
Age
Dosage_mg
Efficacy
BP_Change
Recovery_Time
25
25
25
25
25
50.0000000
187.0000000
54.0000000
1.0000000
19.0000000
33.0000000
147.0000000
33.0000000
-6.0000000
9.0000000
64.0000000
232.0000000
83.0000000
11.0000000
25.0000000


/* Step 4: Frequency Analysis */

PROC FREQ DATA=Clinical_Trials;

    TABLES Gender Drug_Name Side_Effects Outcome / NOROW NOCOL NOPERCENT;

RUN;


OUTPUT:

                                                                    The FREQ Procedure

Gender Frequency Cumulative
Frequency
Female 10 10
Male 15 25


Drug_Name Frequency Cumulative
Frequency
DrugA 6 6
DrugB 4 10
DrugC 3 13
DrugD 4 17
DrugE 8 25


Side_Effects Frequency Cumulative
Frequency
Dizziness 5 5
Fatigue 2 7
Headache 8 15
Insomnia 3 18
Nausea 2 20
None 5 25


Outcome Frequency Cumulative
Frequency
Failure 11 11
Success 14 25


/* Step 5: Univariate Analysis with Outlier Detection */

PROC UNIVARIATE DATA=Clinical_Trials;

    VAR Age Dosage_mg Efficacy BP_Change Recovery_Time Weight_Change Heart_Rate Cholesterol_Level;

    HISTOGRAM / NORMAL;

    QQPLOT;

RUN;


OUTPUT:

                                                  The UNIVARIATE Procedure
                                                          Variable: Age

Moments
N 25 Sum Weights 25
Mean 48.48 Sum Observations 1212
Std Deviation 17.7766701 Variance 316.01
Skewness 0.11151479 Kurtosis -1.2704097
Uncorrected SS 66342 Corrected SS 7584.24
Coeff Variation 36.6680489 Std Error Mean 3.55533402


Basic Statistical Measures
Location Variability
Mean 48.48000 Std Deviation 17.77667
Median 50.00000 Variance 316.01000
Mode 33.00000 Range 57.00000
    Interquartile Range 31.00000

NOTE: ONLY AGE VARIABLE OUTPUT PLACED HERE TRY TO SEE ALL VARIABLES IN SAS...


/* Step 6: Correlation Analysis */

PROC CORR DATA=Clinical_Trials;

    VAR Age Dosage_mg Efficacy BP_Change Recovery_Time Heart_Rate Cholesterol_Level;

RUN;


OUTPUT:

Pearson Correlation Coefficients, N = 25
Prob > |r| under H0: Rho=0
  Age Dosage_mg Efficacy BP_Change Recovery_Time Heart_Rate Cholesterol_Level
Age
1.00000
 
-0.22513
0.2793
-0.38843
0.0550
-0.06326
0.7639
0.04588
0.8276
-0.06161
0.7699
-0.16127
0.4412
Dosage_mg
-0.22513
0.2793
1.00000
 
-0.03909
0.8528
-0.00323
0.9878
0.03312
0.8751
0.03931
0.8520
0.14770
0.4811
Efficacy
-0.38843
0.0550
-0.03909
0.8528
1.00000
 
0.03497
0.8682
0.17062
0.4148
0.17610
0.3998
0.17966
0.3901
BP_Change
-0.06326
0.7639
-0.00323
0.9878
0.03497
0.8682
1.00000
 
-0.17149
0.4124
0.10466
0.6186
-0.04848
0.8180
Recovery_Time
0.04588
0.8276
0.03312
0.8751
0.17062
0.4148
-0.17149
0.4124
1.00000
 
0.17887
0.3923
0.35291
0.0836
Heart_Rate
-0.06161
0.7699
0.03931
0.8520
0.17610
0.3998
0.10466
0.6186
0.17887
0.3923
1.00000
 
0.34002
0.0963
Cholesterol_Level
-0.16127
0.4412
0.14770
0.4811
0.17966
0.3901
-0.04848
0.8180
0.35291
0.0836
0.34002
0.0963
1.00000
 


/* Step 7: Report Generation */

PROC REPORT DATA=Clinical_Trials NOWD;

    COLUMN Trial_ID Patient_ID Gender Drug_Name Dosage_mg Efficacy Recovery_Time Outcome Heart_Rate Cholesterol_Level;

    DEFINE Trial_ID / GROUP;

    DEFINE Patient_ID / DISPLAY;

    DEFINE Gender / GROUP;

    DEFINE Drug_Name / GROUP;

    DEFINE Dosage_mg / ANALYSIS MEAN;

    DEFINE Efficacy / ANALYSIS MEAN;

    DEFINE Recovery_Time / ANALYSIS MEAN;

    DEFINE Outcome / GROUP;

    DEFINE Heart_Rate / ANALYSIS MEAN;

    DEFINE Cholesterol_Level / ANALYSIS MEAN;

RUN;


OUTPUT:

Trial_ID Patient_ID Gender Drug_Name Dosage_mg Efficacy Recovery_Time Outcome Heart_Rate Cholesterol_Level
T1001 P2005 Female DrugA 129.00 97.00 25.00 Success 88.00 210.00
  P2004   DrugD 187.00 98.00 20.00 Success 88.00 185.00
  P2003 Male DrugA 228.00 0.00 12.00 Failure 66.00 162.00
  P2001   DrugB 74.00 26.00 8.00 Failure 66.00 154.00
  P2002   DrugE 292.00 74.00 15.00 Success 71.00 185.00
T1002 P2002 Female DrugC 91.00 83.00 21.00 Success 96.00 177.00
  P2004   DrugE 153.00 1.00 7.00 Failure 95.00 167.00
  P2003 Male DrugB 124.00 37.00 8.00 Failure 62.00 155.00
  P2001     232.00 92.00 6.00 Success 74.00 186.00
  P2005   DrugE 77.00 75.00 27.00 Success 82.00 242.00
T1003 P2005 Female DrugC 163.00 8.00 20.00 Failure 90.00 239.00
  P2003   DrugE 162.00 48.00 29.00 Failure 63.00 216.00
  P2002 Male DrugA 240.00 61.00 10.00 Success 92.00 220.00
  P2004   DrugD 266.00 6.00 28.00 Failure 79.00 158.00
  P2001   DrugE 232.00 56.00 31.00 Success 76.00 195.00
T1004 P2003 Female DrugC 83.00 33.00 6.00 Failure 68.00 155.00
  P2001   DrugD 147.00 84.00 19.00 Success 87.00 228.00
  P2004     175.00 53.00 32.00   72.00 203.00
  P2002   DrugE 215.00 55.00 9.00 Success 61.00 214.00
  P2005 Male DrugE 226.00 33.00 31.00 Failure 86.00 232.00
T1005 P2003 Male DrugA 200.00 42.00 14.00 Failure 65.00 243.00
  P2002     201.00 94.00 13.00 Success 72.00 163.00
  P2004     244.00 96.00 22.00   92.00 216.00
  P2001   DrugB 170.00 54.00 20.00 Success 61.00 158.00
  P2005   DrugE 274.00 22.00 8.00 Failure 88.00 222.00


/* Step 8: Advanced SQL Queries */

PROC SQL;

    SELECT Drug_Name, AVG(Efficacy) AS Avg_Efficacy, COUNT(*) AS Total_Patients

    FROM Clinical_Trials

    GROUP BY Drug_Name

    ORDER BY Avg_Efficacy DESC;

QUIT;


OUTPUT:

Drug_Name Avg_Efficacy Total_Patients
DrugA 65 6
DrugD 60.25 4
DrugB 52.25 4
DrugE 45.5 8
DrugC 41.33333 3


PROC SQL;

    SELECT Gender, AVG(Age) AS Avg_Age, COUNT(*) AS Total_Patients

    FROM Clinical_Trials

    GROUP BY Gender;

QUIT;


OUTPUT:

Gender Avg_Age Total_Patients
Female 55 10
Male 44.13333 15


PROC SQL;

    SELECT Side_Effects, COUNT(*) AS Frequency

    FROM Clinical_Trials

    GROUP BY Side_Effects

    ORDER BY Frequency DESC;

QUIT;


OUTPUT:

Side_Effects Frequency
Headache 8
None 5
Dizziness 5
Insomnia 3
Fatigue 2
Nausea 2

PROC SQL;

    SELECT AVG(Heart_Rate) AS Avg_Heart_Rate, AVG(Cholesterol_Level) AS Avg_Cholesterol

    FROM Clinical_Trials;

QUIT;


OUTPUT:

Avg_Heart_Rate Avg_Cholesterol
77.6 195.4


/* Step 9: Data Visualization */

PROC SGPLOT DATA=Clinical_Trials;

    VBOX Efficacy / CATEGORY=Drug_Name;

    TITLE "Drug Efficacy Comparison";

RUN;


PROC SGPLOT DATA=Clinical_Trials;

    VBAR Side_Effects / RESPONSE=BP_Change GROUP=Drug_Name;

    TITLE "Side Effects vs BP Change";

RUN;


PROC SGPLOT DATA=Clinical_Trials;

    SCATTER X=Age Y=Efficacy / GROUP=Drug_Name;

    TITLE "Age vs Efficacy by Drug";

RUN;


PROC SGPLOT DATA=Clinical_Trials;

    HISTOGRAM Recovery_Time / NORMAL;

    TITLE "Recovery Time Distribution";

RUN;


PROC SGPLOT DATA=Clinical_Trials;

    SERIES X=Age Y=Heart_Rate / GROUP=Gender;

    TITLE "Heart Rate vs Age";

RUN;


PROC SGPLOT DATA=Clinical_Trials;

    VBOX Cholesterol_Level / CATEGORY=Gender;

    TITLE "Cholesterol Levels by Gender";

RUN;


/* Step 10: Data Export */

PROC EXPORT DATA=Clinical_Trials

    OUTFILE="clinical_trials_output.csv"

    DBMS=CSV

    REPLACE;

RUN;




PRACTICE AND COMMENT YOUR CODE: 

-->PLEASE FOLLOW OUR BLOG FOR MORE UPDATES.

TO FOLLOW OUR TELEGRAM CHANNEL CLICK HERE

Comments