Tuesday, 23 December 2025

348.SPACE STATIONS PERFORMANCE ANALYSIS USING DATA STEP | PROC SQL | PROC MEANS | PROC SGPLOT | MACROS | FUNCTIONS | PROC APPEND | MERGE STATEMENT | PROC TRANSPOSE

SPACE STATIONS PERFORMANCE ANALYSIS USING DATA STEP | PROC SQL | PROC MEANS | PROC SGPLOT | MACROS | FUNCTIONS | PROC APPEND | MERGE STATEMENT | PROC TRANSPOSE 

option nocenter;

1.SPACE STATIONS DATASET CREATION WITH DATE FORMATS

data work.space_stations;

    length Station_Name $25 Country $15;

    format Year_Launched date9.;

    input Station_Name $ Country $ Orbit_Height Crew_Capacity Year_Launched :date9. 

          Duration;

    datalines;

ISS USA 408 7 20NOV1998 30

Tiangong China 390 6 29APR2021 15

Mir Russia 400 6 19FEB1986 15

Skylab USA 435 3 14MAY1973 6

Salyut1 Russia 200 3 19APR1971 1

Salyut6 Russia 350 3 29SEP1977 4

Salyut7 Russia 350 4 19APR1982 4

Tiangong2 China 393 3 15SEP2016 2

Almaz Russia 250 3 03APR1973 2

Freedom USA 410 8 01JAN1995 20

ShenzhouLab China 380 4 01JAN2030 10

OrbitalHub ESA 420 6 01JAN2035 25

;

run;

proc print data=work.space_stations;

run;

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDuration
1ISSUSA20NOV1998408730
2TiangongChina29APR2021390615
3MirRussia19FEB1986400615
4SkylabUSA14MAY197343536
5Salyut1Russia19APR197120031
6Salyut6Russia29SEP197735034
7Salyut7Russia19APR198235044
8Tiangong2China15SEP201639332
9AlmazRussia03APR197325032
10FreedomUSA01JAN1995410820
11ShenzhouLabChina01JAN2030380410
12OrbitalHubESA01JAN2035420625


2.DATE CALCULATIONS USING INTCK AND INTNX

Years since launch (experience metric)

data work.space_age;

    set work.space_stations;

    Years_In_Orbit = intck('year', Year_Launched, today());

    Next_Maintenance = intnx('year', Year_Launched, 5, 'same');

    format Next_Maintenance date9.;

run;

proc print data=work.space_age;

run;

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDurationYears_In_OrbitNext_Maintenance
1ISSUSA20NOV19984087302720NOV2003
2TiangongChina29APR2021390615429APR2026
3MirRussia19FEB19864006153919FEB1991
4SkylabUSA14MAY1973435365214MAY1978
5Salyut1Russia19APR1971200315419APR1976
6Salyut6Russia29SEP1977350344829SEP1982
7Salyut7Russia19APR1982350444319APR1987
8Tiangong2China15SEP201639332915SEP2021
9AlmazRussia03APR1973250325203APR1978
10FreedomUSA01JAN19954108203001JAN2000
11ShenzhouLabChina01JAN2030380410-501JAN2035
12OrbitalHubESA01JAN2035420625-1001JAN2040


3.PROC SQL – DATA SUMMARIZATION

proc sql;

    create table work.sql_summary as

    select Country,

           count(*) as Station_Count,

           avg(Orbit_Height) as Avg_Orbit,

           avg(Crew_Capacity) as Avg_Crew

    from work.space_stations

    group by Country;

quit;

proc print data=work.sql_summary;

run;

OUTPUT:

ObsCountryStation_CountAvg_OrbitAvg_Crew
1China3387.6674.33333
2ESA1420.0006.00000
3Russia5310.0003.80000
4USA3417.6676.00000

4.PROC MEANS – DESCRIPTIVE STATISTICS

proc means data=work.space_stations min max mean;

    var Orbit_Height Crew_Capacity Duration;

run;

OUTPUT:

The MEANS Procedure

VariableMinimumMaximumMean
Orbit_Height
Crew_Capacity
Duration
200.0000000
3.0000000
1.0000000
435.0000000
8.0000000
30.0000000
365.5000000
4.6666667
11.1666667

5.MACRO FOR PERFORMANCE GROUPING

%macro performance_group(in=, out=);

    data &out;

        set ∈

        length Performance $10;

        if Crew_Capacity >= 6 then Performance = 'HIGH';

        else if Crew_Capacity >= 4 then Performance = 'MEDIUM';

        else Performance = 'LOW';

    run;

proc print data=&out;

    run;


%mend;


%performance_group(in=work.space_stations, out=work.space_perf);

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDurationPerformance
1ISSUSA20NOV1998408730HIGH
2TiangongChina29APR2021390615HIGH
3MirRussia19FEB1986400615HIGH
4SkylabUSA14MAY197343536LOW
5Salyut1Russia19APR197120031LOW
6Salyut6Russia29SEP197735034LOW
7Salyut7Russia19APR198235044MEDIUM
8Tiangong2China15SEP201639332LOW
9AlmazRussia03APR197325032LOW
10FreedomUSA01JAN1995410820HIGH
11ShenzhouLabChina01JAN2030380410MEDIUM
12OrbitalHubESA01JAN2035420625HIGH


6.PROC SGPLOT – VISUAL ANALYSIS

Orbit Height vs Crew Capacity

proc sgplot data=work.space_perf;

    scatter x=Orbit_Height y=Crew_Capacity / datalabel=Station_Name;

    title "Orbit Height vs Crew Capacity of Space Stations";

run;

OUTPUT:

The SGPlot Procedure


7.DATA APPEND – ADDING FUTURE STATIONS

data work.future_stations;

    length Station_Name $25 Country $15;

    format Year_Launched date9.;

    input Station_Name $ Country $ Orbit_Height Crew_Capacity Year_Launched :date9. Duration;

    datalines;

LunarGateway USA 480 4 01JAN2028 12

MarsTransit USA 600 6 01JAN2038 20

;

run;

proc print data=work.future_stations;

run;

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDuration
1LunarGatewayUSA01JAN2028480412
2MarsTransitUSA01JAN2038600620


Appending

proc append base=work.space_stations

            data=work.future_stations force;

run;

proc print data=work.space_stations;

run;

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDuration
1ISSUSA20NOV1998408730
2TiangongChina29APR2021390615
3MirRussia19FEB1986400615
4SkylabUSA14MAY197343536
5Salyut1Russia19APR197120031
6Salyut6Russia29SEP197735034
7Salyut7Russia19APR198235044
8Tiangong2China15SEP201639332
9AlmazRussia03APR197325032
10FreedomUSA01JAN1995410820
11ShenzhouLabChina01JAN2030380410
12OrbitalHubESA01JAN2035420625
13LunarGatewayUSA01JAN2028480412
14MarsTransitUSA01JAN2038600620


8.DATA MERGE – COMBINING METADATA

data work.country_info;

    length Country $15 Agency $20;

    input Country $ Agency $;

    datalines;

USA NASA

Russia ROSCOSMOS

China CNSA

ESA ESA

;

run;

proc print data=work.country_info;

run;

OUTPUT:

ObsCountryAgency
1USANASA
2RussiaROSCOSMOS
3ChinaCNSA
4ESAESA

proc sort data=work.space_stations; by Country; run;

proc print data=work.space_stations;

run;

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDuration
1TiangongChina29APR2021390615
2Tiangong2China15SEP201639332
3ShenzhouLabChina01JAN2030380410
4OrbitalHubESA01JAN2035420625
5MirRussia19FEB1986400615
6Salyut1Russia19APR197120031
7Salyut6Russia29SEP197735034
8Salyut7Russia19APR198235044
9AlmazRussia03APR197325032
10ISSUSA20NOV1998408730
11SkylabUSA14MAY197343536
12FreedomUSA01JAN1995410820
13LunarGatewayUSA01JAN2028480412
14MarsTransitUSA01JAN2038600620


proc sort data=work.country_info; by Country; run;

proc print data=work.country_info;

run;

OUTPUT:

ObsCountryAgency
1ChinaCNSA
2ESAESA
3RussiaROSCOSMOS
4USANASA


data work.station_full;

    merge work.space_stations(in=a)

          work.country_info(in=b);

    by Country;

    if a;

run;

proc print data=work.station_full;

run;

OUTPUT:

ObsStation_NameCountryYear_LaunchedOrbit_HeightCrew_CapacityDurationAgency
1TiangongChina29APR2021390615CNSA
2Tiangong2China15SEP201639332CNSA
3ShenzhouLabChina01JAN2030380410CNSA
4OrbitalHubESA01JAN2035420625ESA
5MirRussia19FEB1986400615ROSCOSMOS
6Salyut1Russia19APR197120031ROSCOSMOS
7Salyut6Russia29SEP197735034ROSCOSMOS
8Salyut7Russia19APR198235044ROSCOSMOS
9AlmazRussia03APR197325032ROSCOSMOS
10ISSUSA20NOV1998408730NASA
11SkylabUSA14MAY197343536NASA
12FreedomUSA01JAN1995410820NASA
13LunarGatewayUSA01JAN2028480412NASA
14MarsTransitUSA01JAN2038600620NASA


9.PROC TRANSPOSE – STRUCTURAL RESHAPING

proc transpose data=work.space_stations

               out=work.transposed_duration

               prefix=Duration_;

    by Country;

    var Duration;

run;

proc print data=work.transposed_duration;

run;

OUTPUT:

ObsCountry_NAME_Duration_1Duration_2Duration_3Duration_4Duration_5
1ChinaDuration15210..
2ESADuration25....
3RussiaDuration151442
4USADuration306201220


10.PROC MEANS

proc means data=work.space_station;

    var Orbit_Height Crew_Capacity;

run;

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

OUTPUT:

The MEANS Procedure

VariableNMeanStd DevMinimumMaximum
Orbit_Height
Crew_Capacity
14
14
390.4285714
4.7142857
94.0357659
1.7288756
200.0000000
3.0000000
600.0000000
8.0000000

YESTERDAY'S QUESTION:

11.PROC MEANS

proc means forest_merged;

    var Rainfall Area;

run;

DATA= MISSED IN THE CODE

proc means DATA= forest_merged;

    var Rainfall Area;

run;


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

OUTPUT:

The MEANS Procedure

VariableNMeanStd DevMinimumMaximum
Rainfall
Area
13
13
2461.54
1386798.31
1436.16
2637717.45
600.0000000
88.0000000
5000.00
8000000.00



To Visit My Previous Proc  Means And Nway Option: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.

No comments:

Post a Comment