270.BRIDGE ANALYSIS USING PROC PRINT | PROC SQL | PROC FREQ | PROC MEANS | PROC REPORT | PROC TRANSPOSE | SAS MACROS FOR AUTOMATED BRIDGE DATA INSIGHTS

BRIDGE ANALYSIS USING PROC PRINT | PROC SQL | PROC FREQ | PROC MEANS | PROC REPORT | PROC TRANSPOSE | SAS MACROS FOR AUTOMATED BRIDGE DATA INSIGHTS

/*Creating a dataset of bridges in INDIA*/

1. Sample data input 

options nocenter;

data bridges;

    length BridgeName $25 Type $15 Location $20 Material $20;

    input BridgeName $ Type $ Length Location $ YearBuilt Material $;

    datalines;

HowrahBridge Cantilever 656 Kolkata 1943 Steel

VidyasagarSetu CableStayed 823 Kolkata 1992 Steel

ChenabBridge Arch 1315 Reasi 2022 Steel

BandraWorliSeaLink CableStayed 5600 Mumbai 2009 SteelConcrete

DobraChanti Suspension 725 NewTehri 2020 Steel

AtalSetu CableStayed 592 Basohli 2015 Concrete

NewYamunaBridge CableStayed 1510 Allahabad 2005 Concrete

SignatureBridge CableStayed 675 Delhi 2018 SteelConcrete

SyansuBridge Suspension 375 NewTehri 2007 Steel

;

run;

proc print data=bridges noobs;

    title "Bridge Data in India";

run;

Output:

Bridge Data in India

BridgeNameTypeLocationMaterialLengthYearBuilt
HowrahBridgeCantileverKolkataSteel6561943
VidyasagarSetuCableStayedKolkataSteel8231992
ChenabBridgeArchReasiSteel13152022
BandraWorliSeaLinkCableStayedMumbaiSteelConcrete56002009
DobraChantiSuspensionNewTehriSteel7252020
AtalSetuCableStayedBasohliConcrete5922015
NewYamunaBridgeCableStayedAllahabadConcrete15102005
SignatureBridgeCableStayedDelhiSteelConcrete6752018
SyansuBridgeSuspensionNewTehriSteel3752007

2. PROC SORT to sort bridges by Length in descending order 

proc sort data=bridges out=bridges_sorted;

    by descending Length;

run;

proc print;run;

Output:

ObsBridgeNameTypeLocationMaterialLengthYearBuilt
1BandraWorliSeaLinkCableStayedMumbaiSteelConcrete56002009
2NewYamunaBridgeCableStayedAllahabadConcrete15102005
3ChenabBridgeArchReasiSteel13152022
4VidyasagarSetuCableStayedKolkataSteel8231992
5DobraChantiSuspensionNewTehriSteel7252020
6SignatureBridgeCableStayedDelhiSteelConcrete6752018
7HowrahBridgeCantileverKolkataSteel6561943
8AtalSetuCableStayedBasohliConcrete5922015
9SyansuBridgeSuspensionNewTehriSteel3752007


3. PROC SQL to find top 5 longest bridges 

proc sql outobs=5;

    title "Top 5 Longest Bridges in India";

    select BridgeName, Type, Length, Location, YearBuilt

    from bridges_sorted;

quit;

Output:

Top 5 Longest Bridges in India

BridgeNameTypeLengthLocationYearBuilt
BandraWorliSeaLinkCableStayed5600Mumbai2009
NewYamunaBridgeCableStayed1510Allahabad2005
ChenabBridgeArch1315Reasi2022
VidyasagarSetuCableStayed823Kolkata1992
DobraChantiSuspension725NewTehri2020

4. PROC FREQ to get frequency of bridge types 

proc freq data=bridges;

    tables Type / nocum noprint out=TypeFreq;

run;

proc print data=TypeFreq;

run;

Output:

ObsTypeCOUNTPERCENT
1Arch111.1111
2CableStayed555.5556
3Cantilever111.1111
4Suspension222.2222


5. PROC MEANS to get stats of bridge lengths 

proc means data=bridges mean median min max n;

    var Length;

    title "Descriptive Statistics for Bridge Lengths";

run;

Output:

Descriptive Statistics for Bridge Lengths

The MEANS Procedure

Analysis Variable : Length
MeanMedianMinimumMaximumN
1363.44725.0000000375.00000005600.009

6. Macro to filter bridge data based on minimum length 

%macro FilterBridge(min_len);

    proc sql;

        select BridgeName, Type, Length, Location

        from bridges

        where Length >= &min_len;

    quit;

%mend FilterBridge;


%FilterBridge(700);

Output:

BridgeNameTypeLengthLocation
VidyasagarSetuCableStayed823Kolkata
ChenabBridgeArch1315Reasi
BandraWorliSeaLinkCableStayed5600Mumbai
DobraChantiSuspension725NewTehri
NewYamunaBridgeCableStayed1510Allahabad


7. Using PROC REPORT for a detailed report 

proc report data=bridges nowd;

    columns Type BridgeName Length Location YearBuilt;

    define Type / group;

    define BridgeName / display;

    define Length / analysis mean;

    define Location / display;

    define YearBuilt / display;

    title "Detailed Bridge Report Grouped by Type";

run;

Output:

Detailed Bridge Report Grouped by Type

TypeBridgeNameLengthLocationYearBuilt
ArchChenabBridge1315Reasi2022
CableStayedVidyasagarSetu823Kolkata1992
 BandraWorliSeaLink5600Mumbai2009
 AtalSetu592Basohli2015
 NewYamunaBridge1510Allahabad2005
 SignatureBridge675Delhi2018
CantileverHowrahBridge656Kolkata1943
SuspensionDobraChanti725NewTehri2020
 SyansuBridge375NewTehri2007

8. Creating a macro for detailed bridge statistics by type 

%macro BridgeStats(bridge_type);

    proc means data=bridges n mean stddev min max maxdec=2;

        where Type = "&bridge_type";

        var Length YearBuilt;

        title "Statistics for Bridge Type: &bridge_type";

    run;

%mend BridgeStats;


%BridgeStats(CableStayed);

Output:

Statistics for Bridge Type: CableStayed

The MEANS Procedure

VariableNMeanStd DevMinimumMaximum
Length
YearBuilt
5
5
1840.00
2007.80
2132.81
10.18
592.00
1992.00
5600.00
2018.00

8. Macro to create frequency report with PROC REPORT 

%macro BridgeFreqReport;

    proc freq data=bridges order=freq;

        tables Type / out=FreqOut;

    run;


    proc report data=FreqOut nowd;

        columns Type count percent;

        define Type / group;

        define count / analysis sum;

        define percent / analysis mean format=5.1;

        title "Frequency Report of Bridge Types";

    run;

%mend BridgeFreqReport;


%BridgeFreqReport;

Output:

The FREQ Procedure

TypeFrequencyPercentCumulative
Frequency
Cumulative
Percent
CableStayed555.56555.56
Suspension222.22777.78
Arch111.11888.89
Cantilever111.119100.00

Frequency Report of Bridge Types

TypeFrequency CountPercent of Total Frequency
Arch111.1
CableStayed555.6
Cantilever111.1
Suspension222.2

9. Using PROC TRANSPOSE to pivot the frequency data 

proc transpose data=FreqOut out=TypeFreqT(drop=_name_);

    id Type;

    var Count;

run;


proc print data=TypeFreqT noobs;

    title "Transposed Frequency Table of Bridge Types";

run;

Output:

Transposed Frequency Table of Bridge Types

_LABEL_CableStayedSuspensionArchCantilever
Frequency Count5211

10. PROC SQL to calculate average length by material 

proc sql;

    select Material, avg(Length) as AvgLength format=8.2

    from bridges

    group by Material;

quit;

Output:

MaterialAvgLength
Concrete1051.00
Steel778.80
SteelConcrete3137.50



To Visit My Previous Organizational Data Management And Segmentation :Click Here
To Visit My Previous Proc Means And CharType Option:Click Here
To Visit My Previous SAS Functions:Click Here
To Visit My Previous Length Statement Using In Many Ways:Click Here



Follow Us On : 


 


--- FOLLOW OUR BLOG FOR MORE INFORMATION.

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

Comments

Popular posts from this blog

409.Can We Build a Reliable Emergency Services Analytics & Fraud Detection System in SAS While Identifying and Fixing Intentional Errors?

397.If a satellite has excellent signal strength but very high latency, can it still deliver good quality communication? Why or why not?A Sas Study

401.How Efficient Are Global Data Centers? A Complete SAS Analytics Study