Monday, 5 January 2026

361.RIVER TRADE AND POLLUTION ANALYSIS USING SAS DATA STEP | PROC SQL | PROC MEANS | PROC REG | PROC SGPLOT | PROC COPY | APPEND | MERGE | SET | TRANSPOSE | MACROS | DATE FUNCTIONS (MDY-INTNX-INTCK)

RIVER TRADE AND POLLUTION ANALYSIS USING SAS DATA STEP | PROC SQL | PROC MEANS | PROC REG | PROC SGPLOT | PROC COPY | APPEND | MERGE | SET | TRANSPOSE | MACROS | DATE FUNCTIONS (MDY-INTNX-INTCK) 

option nocenter;

1.RIVERS BASE DATASET CREATION USING DATA STEP

data rivers_base;

    length River_Name $20;

    format Survey_Date date9.;

    input River_Name $ Length Countries_Crossed Pollution_Level Trade_Importance

           Survey_Date :date9.;

    datalines;

Ganges 2525 2 78 9 01JAN2022

Nile 6650 11 65 10 15FEB2022

Amazon 6400 7 45 8 10MAR2022

Yangtze 6300 1 72 9 05APR2022

Mississippi 3730 1 60 8 20MAY2022

Danube 2860 10 55 7 18JUN2022

Volga 3530 1 50 6 30JUL2022

Rhine 1230 6 68 8 15AUG2022

Mekong 4350 6 70 7 01SEP2022

Indus 3180 4 62 8 10OCT2022

Tigris 1850 3 75 6 15NOV2022

Euphrates 2800 4 73 7 20DEC2022

;

run;

proc print data=rivers_base;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_Importance
1Ganges01JAN202225252789
2Nile15FEB20226650116510
3Amazon10MAR202264007458
4Yangtze05APR202263001729
5Mississippi20MAY202237301608
6Danube18JUN2022286010557
7Volga30JUL202235301506
8Rhine15AUG202212306688
9Mekong01SEP202243506707
10Indus10OCT202231804628
11Tigris15NOV202218503756
12Euphrates20DEC202228004737


2.DATE DERIVATIONS USING INTNX, INTCK, MDY

data rivers_dates;

    set rivers_base;

    Next_Review_Date = intnx('month', Survey_Date, 6, 'same');

    Years_Since_Survey = intck('year', Survey_Date, '01JAN2025'd);

    Review_Year_Start = mdy(1,1,year(Survey_Date));

    format Next_Review_Date Review_Year_Start date9.;

run;

proc print data=rivers_dates;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_ImportanceNext_Review_DateYears_Since_SurveyReview_Year_Start
1Ganges01JAN20222525278901JUL2022301JAN2022
2Nile15FEB2022665011651015AUG2022301JAN2022
3Amazon10MAR20226400745810SEP2022301JAN2022
4Yangtze05APR20226300172905OCT2022301JAN2022
5Mississippi20MAY20223730160820NOV2022301JAN2022
6Danube18JUN202228601055718DEC2022301JAN2022
7Volga30JUL20223530150630JAN2023301JAN2022
8Rhine15AUG20221230668815FEB2023301JAN2022
9Mekong01SEP20224350670701MAR2023301JAN2022
10Indus10OCT20223180462810APR2023301JAN2022
11Tigris15NOV20221850375615MAY2023301JAN2022
12Euphrates20DEC20222800473720JUN2023301JAN2022


3.SUMMARY STATISTICS USING PROC MEANS

proc means data=rivers_dates mean min max std;

    var Length Pollution_Level Trade_Importance Countries_Crossed;

run;

OUTPUT:

The MEANS Procedure

VariableMeanMinimumMaximumStd Dev
Length
Pollution_Level
Trade_Importance
Countries_Crossed
3783.75
64.4166667
7.7500000
4.6666667
1230.00
45.0000000
6.0000000
1.0000000
6650.00
78.0000000
10.0000000
11.0000000
1804.30
10.3173141
1.2154311
3.4200833

4.ADVANCED QUERYING USING PROC SQL

proc sql;

    create table high_trade_rivers as

    select River_Name,Length,Pollution_Level,Trade_Importance

    from rivers_dates

    where Trade_Importance >= 8

    order by Pollution_Level desc;

quit;

proc print data=high_trade_rivers;

run;

OUTPUT:

ObsRiver_NameLengthPollution_LevelTrade_Importance
1Ganges2525789
2Yangtze6300729
3Rhine1230688
4Nile66506510
5Indus3180628
6Mississippi3730608
7Amazon6400458


5.REGRESSION ANALYSIS – POLLUTION VS TRADE

proc reg data=rivers_dates;

    model Pollution_Level = Trade_Importance Length Countries_Crossed;

run;

quit;

OUTPUT:

The REG Procedure

Model: MODEL1

Dependent Variable: Pollution_Level

Number of Observations Read12
Number of Observations Used12
Analysis of Variance
SourceDFSum of
Squares
Mean
Square
F ValuePr > F
Model3401.18558133.728531.390.3146
Error8769.7310896.21639  
Corrected Total111170.91667   
Root MSE9.80900R-Square0.3426
Dependent Mean64.41667Adj R-Sq0.0961
Coeff Var15.22742  
Parameter Estimates
VariableDFParameter
Estimate
Standard
Error
t ValuePr > |t|
Intercept144.7236719.568342.290.0516
Trade_Importance14.533882.890651.570.1554
Length1-0.003170.00195-1.630.1416
Countries_Crossed1-0.736220.89928-0.820.4367

The REG Procedure

Model: MODEL1

Dependent Variable: Pollution_Level

Panel of fit diagnostics for Pollution_Level.
Panel of scatterplots of residuals by regressors for Pollution_Level.

6.VISUALIZATION USING PROC SGPLOT

proc sgplot data=rivers_dates;

    scatter x=Trade_Importance y=Pollution_Level;

    reg x=Trade_Importance y=Pollution_Level;

    title "Pollution vs Trade Importance of Rivers";

run;

OUTPUT:

The SGPlot Procedure


7.MACRO FOR RIVER RISK RATING

%macro river_rating;

data rivers_rated;

    set rivers_dates;

    if Pollution_Level >= 70 and Trade_Importance >= 8 then Risk_Category = "CRITICAL";

    else if Pollution_Level >= 60 then Risk_Category = "HIGH";

    else if Pollution_Level >= 50 then Risk_Category = "MODERATE";

    else Risk_Category = "LOW";

run;

proc print data=rivers_rated;

run;

%mend;

%river_rating;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_ImportanceNext_Review_DateYears_Since_SurveyReview_Year_StartRisk_Category
1Ganges01JAN20222525278901JUL2022301JAN2022CRITICAL
2Nile15FEB2022665011651015AUG2022301JAN2022HIGH
3Amazon10MAR20226400745810SEP2022301JAN2022LOW
4Yangtze05APR20226300172905OCT2022301JAN2022CRITICAL
5Mississippi20MAY20223730160820NOV2022301JAN2022HIGH
6Danube18JUN202228601055718DEC2022301JAN2022MODERATE
7Volga30JUL20223530150630JAN2023301JAN2022MODERATE
8Rhine15AUG20221230668815FEB2023301JAN2022HIGH
9Mekong01SEP20224350670701MAR2023301JAN2022HIGH
10Indus10OCT20223180462810APR2023301JAN2022HIGH
11Tigris15NOV20221850375615MAY2023301JAN2022HIGH
12Euphrates20DEC20222800473720JUN2023301JAN2022HIGH


8.DATA COMBINATION USING SET

data rivers_set;

    set rivers_base 

        rivers_rated;

run;

proc print data=rivers_set;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_ImportanceNext_Review_DateYears_Since_SurveyReview_Year_StartRisk_Category
1Ganges01JAN202225252789... 
2Nile15FEB20226650116510... 
3Amazon10MAR202264007458... 
4Yangtze05APR202263001729... 
5Mississippi20MAY202237301608... 
6Danube18JUN2022286010557... 
7Volga30JUL202235301506... 
8Rhine15AUG202212306688... 
9Mekong01SEP202243506707... 
10Indus10OCT202231804628... 
11Tigris15NOV202218503756... 
12Euphrates20DEC202228004737... 
13Ganges01JAN20222525278901JUL2022301JAN2022CRITICAL
14Nile15FEB2022665011651015AUG2022301JAN2022HIGH
15Amazon10MAR20226400745810SEP2022301JAN2022LOW
16Yangtze05APR20226300172905OCT2022301JAN2022CRITICAL
17Mississippi20MAY20223730160820NOV2022301JAN2022HIGH
18Danube18JUN202228601055718DEC2022301JAN2022MODERATE
19Volga30JUL20223530150630JAN2023301JAN2022MODERATE
20Rhine15AUG20221230668815FEB2023301JAN2022HIGH
21Mekong01SEP20224350670701MAR2023301JAN2022HIGH
22Indus10OCT20223180462810APR2023301JAN2022HIGH
23Tigris15NOV20221850375615MAY2023301JAN2022HIGH
24Euphrates20DEC20222800473720JUN2023301JAN2022HIGH


9.APPEND OPERATION

proc append base=rivers_base 

            data=high_trade_rivers;

run;

proc print data=rivers_base;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_Importance
1Ganges01JAN202225252789
2Nile15FEB20226650116510
3Amazon10MAR202264007458
4Yangtze05APR202263001729
5Mississippi20MAY202237301608
6Danube18JUN2022286010557
7Volga30JUL202235301506
8Rhine15AUG202212306688
9Mekong01SEP202243506707
10Indus10OCT202231804628
11Tigris15NOV202218503756
12Euphrates20DEC202228004737
13Ganges.2525.789
14Yangtze.6300.729
15Rhine.1230.688
16Nile.6650.6510
17Indus.3180.628
18Mississippi.3730.608
19Amazon.6400.458


10.MERGE OPERATION (SORT REQUIRED)

proc sort data=rivers_base; by River_Name; run;

proc print data=rivers_base;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_Importance
1Amazon10MAR202264007458
2Amazon.6400.458
3Danube18JUN2022286010557
4Euphrates20DEC202228004737
5Ganges01JAN202225252789
6Ganges.2525.789
7Indus10OCT202231804628
8Indus.3180.628
9Mekong01SEP202243506707
10Mississippi20MAY202237301608
11Mississippi.3730.608
12Nile15FEB20226650116510
13Nile.6650.6510
14Rhine15AUG202212306688
15Rhine.1230.688
16Tigris15NOV202218503756
17Volga30JUL202235301506
18Yangtze05APR202263001729
19Yangtze.6300.729


proc sort data=rivers_rated; by River_Name; run;

proc print data=rivers_rated;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_ImportanceNext_Review_DateYears_Since_SurveyReview_Year_StartRisk_Category
1Amazon10MAR20226400745810SEP2022301JAN2022LOW
2Danube18JUN202228601055718DEC2022301JAN2022MODERATE
3Euphrates20DEC20222800473720JUN2023301JAN2022HIGH
4Ganges01JAN20222525278901JUL2022301JAN2022CRITICAL
5Indus10OCT20223180462810APR2023301JAN2022HIGH
6Mekong01SEP20224350670701MAR2023301JAN2022HIGH
7Mississippi20MAY20223730160820NOV2022301JAN2022HIGH
8Nile15FEB2022665011651015AUG2022301JAN2022HIGH
9Rhine15AUG20221230668815FEB2023301JAN2022HIGH
10Tigris15NOV20221850375615MAY2023301JAN2022HIGH
11Volga30JUL20223530150630JAN2023301JAN2022MODERATE
12Yangtze05APR20226300172905OCT2022301JAN2022CRITICAL


data rivers_merged;

    merge rivers_base(in=a) rivers_rated(in=b);

    by River_Name;

    if a;

run;

proc print data=rivers_merged;

run;

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_ImportanceNext_Review_DateYears_Since_SurveyReview_Year_StartRisk_Category
1Amazon10MAR20226400745810SEP2022301JAN2022LOW
2Amazon.6400.45810SEP2022301JAN2022LOW
3Danube18JUN202228601055718DEC2022301JAN2022MODERATE
4Euphrates20DEC20222800473720JUN2023301JAN2022HIGH
5Ganges01JAN20222525278901JUL2022301JAN2022CRITICAL
6Ganges.2525.78901JUL2022301JAN2022CRITICAL
7Indus10OCT20223180462810APR2023301JAN2022HIGH
8Indus.3180.62810APR2023301JAN2022HIGH
9Mekong01SEP20224350670701MAR2023301JAN2022HIGH
10Mississippi20MAY20223730160820NOV2022301JAN2022HIGH
11Mississippi.3730.60820NOV2022301JAN2022HIGH
12Nile15FEB2022665011651015AUG2022301JAN2022HIGH
13Nile.6650.651015AUG2022301JAN2022HIGH
14Rhine15AUG20221230668815FEB2023301JAN2022HIGH
15Rhine.1230.68815FEB2023301JAN2022HIGH
16Tigris15NOV20221850375615MAY2023301JAN2022HIGH
17Volga30JUL20223530150630JAN2023301JAN2022MODERATE
18Yangtze05APR20226300172905OCT2022301JAN2022CRITICAL
19Yangtze.6300.72905OCT2022301JAN2022CRITICAL


11.TRANSPOSE FOR REPORTING

proc transpose data=rivers_base out=rivers_transposed;

    var Pollution_Level Trade_Importance;

    by River_Name;

run;

proc print data=rivers_transposed;

run;

OUTPUT:

ObsRiver_Name_NAME_COL1COL2
1AmazonPollution_Level4545
2AmazonTrade_Importance88
3DanubePollution_Level55.
4DanubeTrade_Importance7.
5EuphratesPollution_Level73.
6EuphratesTrade_Importance7.
7GangesPollution_Level7878
8GangesTrade_Importance99
9IndusPollution_Level6262
10IndusTrade_Importance88
11MekongPollution_Level70.
12MekongTrade_Importance7.
13MississippiPollution_Level6060
14MississippiTrade_Importance88
15NilePollution_Level6565
16NileTrade_Importance1010
17RhinePollution_Level6868
18RhineTrade_Importance88
19TigrisPollution_Level75.
20TigrisTrade_Importance6.
21VolgaPollution_Level50.
22VolgaTrade_Importance6.
23YangtzePollution_Level7272
24YangtzeTrade_Importance99


12.TRY THIS ON YOUR OWN

data rivers_error;

    set rivers_dates;

    Pollution_Level_N = input(Pollution_Level, best.);

    if Pollution_Level_N >= 60 and Pollution_Level_N <= 70

    and   and Trade_Importance > 7 then

        Flag = "YES";

run;

proc print data=rivers_error;

run;

/* Note: In practice above there is an Invalid in this code Find it,Correct it and Use it /*

OUTPUT:

ObsRiver_NameSurvey_DateLengthCountries_CrossedPollution_LevelTrade_ImportanceNext_Review_DateYears_Since_SurveyReview_Year_StartPollution_Level_NFlag
1Ganges01JAN20222525278901JUL2022301JAN202278 
2Nile15FEB2022665011651015AUG2022301JAN202265YES
3Amazon10MAR20226400745810SEP2022301JAN202245 
4Yangtze05APR20226300172905OCT2022301JAN202272 
5Mississippi20MAY20223730160820NOV2022301JAN202260YES
6Danube18JUN202228601055718DEC2022301JAN202255 
7Volga30JUL20223530150630JAN2023301JAN202250 
8Rhine15AUG20221230668815FEB2023301JAN202268YES
9Mekong01SEP20224350670701MAR2023301JAN202270 
10Indus10OCT20223180462810APR2023301JAN202262YES
11Tigris15NOV20221850375615MAY2023301JAN202275 
12Euphrates20DEC20222800473720JUN2023301JAN202273 



To Visit My Previous Online Streaming Flatform Dataset:Click Here
To Visit My Previous Statistical Evaluation Of Clinical Trials:Click Here
To Visit My Previous Unlocking Retail Insights Dataset:Click Here
To Visit My Previous Sas Interview Questions-1:Click Here  



Follow Us On : 


 


--->FOLLOW OUR BLOG FOR MORE INFORMATION.

--->PLEASE DO COMMENTS AND SHARE OUR BLOG.



No comments:

Post a Comment