265.Is higher income really leading to better savings, or just higher spending?A Complete Sas Study

Is higher income really leading to better savings, or just higher spending?A Complete Sas Study

  /*Creating a dataset of money in India */

1) DATA CREATION

options nocenter;

data money_in_india;

    length HouseholdID $8 State $20 City $25 Urban_Rural $6 Income_Source $15 Bank_Type $15 Predominant_Expense $20;

    format Monthly_Income Monthly_Savings Cash_Share Digital_Share Remittance_Amount Financial_Literacy 8.2;

    infile datalines dlm=',' dsd truncover;

    input HouseholdID :$8. State :$20. City :$25. Urban_Rural :$6. Income_Source :$15. Bank_Type :$15. Predominant_Expense :$20.

          Monthly_Income Monthly_Savings Cash_Share Digital_Share Remittance_Amount Financial_Literacy;

    if Monthly_Income > 0 then Savings_Rate = Monthly_Savings / Monthly_Income;

    else Savings_Rate = .;

length Income_Tier $15;

    if Monthly_Income >= 100000 then Income_Tier = 'High';

    else if Monthly_Income >= 30000 then Income_Tier = 'Upper-Mid';

    else if Monthly_Income >= 15000 then Income_Tier = 'Mid';

    else Income_Tier = 'Low';

    datalines;

HH001,Maharashtra,Mumbai,Urban,Salaried,Private Bank,Rent & Bills,85000,15000,20,80,0,7.8

HH002,Delhi,New Delhi,Urban,Salaried,Public Bank,Food,45000,5000,30,70,0,6.4

HH003,Karnataka,Bengaluru,Urban,Self-Employed,Private Bank,Education,60000,8000,25,75,5000,7.0

HH004,Kerala,Thiruvananthapuram,Urban,Pensioner,Public Bank,Healthcare,22000,4000,50,50,10000,6.2

HH005,Uttar Pradesh,Lucknow,Rural,Agriculture,Cooperative,Basic Needs,12000,2000,80,20,2000,4.9

HH006,Tamil Nadu,Chennai,Urban,Salaried,Private Bank,Transport,35000,6000,35,65,0,6.7

HH007,West Bengal,Kolkata,Urban,Self-Employed,Private Bank,Food,28000,3000,60,40,0,5.8

HH008,Rajasthan,Jaipur,Rural,Agriculture,Cooperative,Utilities,15000,2500,70,30,0,5.2

HH009,Bihar,Patna,Rural,Labor,No Bank,Cash Expenses,9000,500,90,10,0,3.8

HH010,Telangana,Hyderabad,Urban,Salaried,Private Bank,Entertainment,52000,7000,30,70,0,6.9

HH011,Gujarat,Ahmedabad,Urban,Self-Employed,Public Bank,Food,33000,3500,45,55,0,6.0

HH012,Odisha,Bhubaneswar,Rural,Agriculture,Cooperative,Basic Needs,14000,1200,75,25,0,4.7

HH013,Madhya Pradesh,Bhopal,Rural,Agriculture,Cooperative,Education,16000,2000,65,35,0,5.0

HH014,Assam,Guwahati,Urban,Salaried,Public Bank,Transport,26000,3000,40,60,0,5.6

HH015,Jharkhand,Ranchi,Rural,Labor,No Bank,Cash Expenses,11000,700,85,15,0,4.1

HH016,Haryana,Gurugram,Urban,Salaried,Private Bank,Rent & Bills,98000,20000,22,78,0,8.1

HH017,Punjab,Chandigarh,Urban,Pensioner,Public Bank,Healthcare,30000,4000,48,52,0,6.3

HH018,Chhattisgarh,Raipur,Rural,Agriculture,Cooperative,Basic Needs,13000,1500,78,22,0,4.5

HH019,Andhra Pradesh,Vijayawada,Urban,Self-Employed,Private Bank,Education,29000,2500,55,45,0,5.7

HH020,Goa,Panaji,Urban,Tourism,Private Bank,Entertainment,72000,10000,28,72,15000,7.4

;

run;

proc print;run;

Output:

ObsHouseholdIDStateCityUrban_RuralIncome_SourceBank_TypePredominant_ExpenseMonthly_IncomeMonthly_SavingsCash_ShareDigital_ShareRemittance_AmountFinancial_LiteracySavings_RateIncome_Tier
1HH001MaharashtraMumbaiUrbanSalariedPrivate BankRent & Bills85000.0015000.0020.0080.000.007.800.17647Upper-Mid
2HH002DelhiNew DelhiUrbanSalariedPublic BankFood45000.005000.0030.0070.000.006.400.11111Upper-Mid
3HH003KarnatakaBengaluruUrbanSelf-EmployedPrivate BankEducation60000.008000.0025.0075.005000.007.000.13333Upper-Mid
4HH004KeralaThiruvananthapuramUrbanPensionerPublic BankHealthcare22000.004000.0050.0050.0010000.006.200.18182Mid
5HH005Uttar PradeshLucknowRuralAgricultureCooperativeBasic Needs12000.002000.0080.0020.002000.004.900.16667Low
6HH006Tamil NaduChennaiUrbanSalariedPrivate BankTransport35000.006000.0035.0065.000.006.700.17143Upper-Mid
7HH007West BengalKolkataUrbanSelf-EmployedPrivate BankFood28000.003000.0060.0040.000.005.800.10714Mid
8HH008RajasthanJaipurRuralAgricultureCooperativeUtilities15000.002500.0070.0030.000.005.200.16667Mid
9HH009BiharPatnaRuralLaborNo BankCash Expenses9000.00500.0090.0010.000.003.800.05556Low
10HH010TelanganaHyderabadUrbanSalariedPrivate BankEntertainment52000.007000.0030.0070.000.006.900.13462Upper-Mid
11HH011GujaratAhmedabadUrbanSelf-EmployedPublic BankFood33000.003500.0045.0055.000.006.000.10606Upper-Mid
12HH012OdishaBhubaneswarRuralAgricultureCooperativeBasic Needs14000.001200.0075.0025.000.004.700.08571Low
13HH013Madhya PradeshBhopalRuralAgricultureCooperativeEducation16000.002000.0065.0035.000.005.000.12500Mid
14HH014AssamGuwahatiUrbanSalariedPublic BankTransport26000.003000.0040.0060.000.005.600.11538Mid
15HH015JharkhandRanchiRuralLaborNo BankCash Expenses11000.00700.0085.0015.000.004.100.06364Low
16HH016HaryanaGurugramUrbanSalariedPrivate BankRent & Bills98000.0020000.0022.0078.000.008.100.20408Upper-Mid
17HH017PunjabChandigarhUrbanPensionerPublic BankHealthcare30000.004000.0048.0052.000.006.300.13333Upper-Mid
18HH018ChhattisgarhRaipurRuralAgricultureCooperativeBasic Needs13000.001500.0078.0022.000.004.500.11538Low
19HH019Andhra PradeshVijayawadaUrbanSelf-EmployedPrivate BankEducation29000.002500.0055.0045.000.005.700.08621Mid
20HH020GoaPanajiUrbanTourismPrivate BankEntertainment72000.0010000.0028.0072.0015000.007.400.13889Upper-Mid


2) FORMATS and LABELS

proc format;

    value $urbanfmt 'Urban'='Urban' 

                    'Rural'='Rural' 

                     other ='Unknown';


    value  $tierfmt 'High'='High (>=100k)' 

             'Upper-Mid'='Upper-Mid (30k-99k)' 

                   'Mid'='Mid (15k-29k)' 

                   'Low'='Low (<15k)';

run;


proc datasets library=work nolist;

    modify money_in_india;

    label Monthly_Income = 'Monthly Income (INR)'

          Monthly_Savings = 'Monthly Savings (INR)'

          Cash_Share = 'Cash Share Percentage'

          Digital_Share = 'Digital Share Percentage'

          Financial_Literacy = 'Financial Literacy Score (1-10)'

          Remittance_Amount = 'Monthly Remittance (INR)'

          Savings_Rate = 'Savings Rate (Savings/Income)';

quit;


3) BASIC EXPLORATION

proc contents data=money_in_india short;

run;

Output:

The CONTENTS Procedure

Alphabetic List of Variables for WORK.MONEY_IN_INDIA
Bank_Type Cash_Share City Digital_Share Financial_Literacy HouseholdID Income_Source Income_Tier Monthly_Income Monthly_Savings Predominant_Expense Remittance_Amount Savings_Rate State Urban_Rural

proc print data=money_in_india noobs label; 

run;

Output:

HouseholdIDStateCityUrban_RuralIncome_SourceBank_TypePredominant_ExpenseMonthly Income (INR)Monthly Savings (INR)Cash Share PercentageDigital Share PercentageMonthly Remittance (INR)Financial Literacy Score (1-10)Savings Rate (Savings/Income)Income_Tier
HH001MaharashtraMumbaiUrbanSalariedPrivate BankRent & Bills85000.0015000.0020.0080.000.007.800.17647Upper-Mid
HH002DelhiNew DelhiUrbanSalariedPublic BankFood45000.005000.0030.0070.000.006.400.11111Upper-Mid
HH003KarnatakaBengaluruUrbanSelf-EmployedPrivate BankEducation60000.008000.0025.0075.005000.007.000.13333Upper-Mid
HH004KeralaThiruvananthapuramUrbanPensionerPublic BankHealthcare22000.004000.0050.0050.0010000.006.200.18182Mid
HH005Uttar PradeshLucknowRuralAgricultureCooperativeBasic Needs12000.002000.0080.0020.002000.004.900.16667Low
HH006Tamil NaduChennaiUrbanSalariedPrivate BankTransport35000.006000.0035.0065.000.006.700.17143Upper-Mid
HH007West BengalKolkataUrbanSelf-EmployedPrivate BankFood28000.003000.0060.0040.000.005.800.10714Mid
HH008RajasthanJaipurRuralAgricultureCooperativeUtilities15000.002500.0070.0030.000.005.200.16667Mid
HH009BiharPatnaRuralLaborNo BankCash Expenses9000.00500.0090.0010.000.003.800.05556Low
HH010TelanganaHyderabadUrbanSalariedPrivate BankEntertainment52000.007000.0030.0070.000.006.900.13462Upper-Mid
HH011GujaratAhmedabadUrbanSelf-EmployedPublic BankFood33000.003500.0045.0055.000.006.000.10606Upper-Mid
HH012OdishaBhubaneswarRuralAgricultureCooperativeBasic Needs14000.001200.0075.0025.000.004.700.08571Low
HH013Madhya PradeshBhopalRuralAgricultureCooperativeEducation16000.002000.0065.0035.000.005.000.12500Mid
HH014AssamGuwahatiUrbanSalariedPublic BankTransport26000.003000.0040.0060.000.005.600.11538Mid
HH015JharkhandRanchiRuralLaborNo BankCash Expenses11000.00700.0085.0015.000.004.100.06364Low
HH016HaryanaGurugramUrbanSalariedPrivate BankRent & Bills98000.0020000.0022.0078.000.008.100.20408Upper-Mid
HH017PunjabChandigarhUrbanPensionerPublic BankHealthcare30000.004000.0048.0052.000.006.300.13333Upper-Mid
HH018ChhattisgarhRaipurRuralAgricultureCooperativeBasic Needs13000.001500.0078.0022.000.004.500.11538Low
HH019Andhra PradeshVijayawadaUrbanSelf-EmployedPrivate BankEducation29000.002500.0055.0045.000.005.700.08621Mid
HH020GoaPanajiUrbanTourismPrivate BankEntertainment72000.0010000.0028.0072.0015000.007.400.13889Upper-Mid


proc freq data=money_in_india; 

   tables State Urban_Rural Income_Tier Bank_Type / nocum norow nocol;

run;

Output:

The FREQ Procedure

StateFrequencyPercent
Andhra Pradesh15.00
Assam15.00
Bihar15.00
Chhattisgarh15.00
Delhi15.00
Goa15.00
Gujarat15.00
Haryana15.00
Jharkhand15.00
Karnataka15.00
Kerala15.00
Madhya Pradesh15.00
Maharashtra15.00
Odisha15.00
Punjab15.00
Rajasthan15.00
Tamil Nadu15.00
Telangana15.00
Uttar Pradesh15.00
West Bengal15.00
Urban_RuralFrequencyPercent
Rural735.00
Urban1365.00
Income_TierFrequencyPercent
Low525.00
Mid630.00
Upper-Mid945.00
Bank_TypeFrequencyPercent
Cooperative525.00
No Bank210.00
Private Bank840.00
Public Bank525.00

proc means data=money_in_india n mean median std min max nmiss;

    var Monthly_Income Monthly_Savings Cash_Share Digital_Share Remittance_Amount 

        Financial_Literacy Savings_Rate;

run;

Output:

The MEANS Procedure

VariableLabelNMeanMedianStd DevMinimumMaximumN Miss
Monthly_Income
Monthly_Savings
Cash_Share
Digital_Share
Remittance_Amount
Financial_Literacy
Savings_Rate
Monthly Income (INR)
Monthly Savings (INR)
Cash Share Percentage
Digital Share Percentage
Monthly Remittance (INR)
Financial Literacy Score (1-10)
Savings Rate (Savings/Income)
20
20
20
20
20
20
20
35250.00
5070.00
51.5500000
48.4500000
1600.00
5.9050000
0.1289250
28500.00
3250.00
49.0000000
51.0000000
0
5.9000000
0.1291667
25835.26
4984.62
22.6912341
22.6912341
3992.10
1.2041485
0.0401098
9000.00
500.0000000
20.0000000
10.0000000
0
3.8000000
0.0555556
98000.00
20000.00
90.0000000
80.0000000
15000.00
8.1000000
0.2040816
0
0
0
0
0
0
0

proc univariate data=money_in_india cibasic;

    var Monthly_Income Monthly_Savings Financial_Literacy;

    histogram Monthly_Income / normal;

run;

Output:

The UNIVARIATE Procedure

Variable: Monthly_Income (Monthly Income (INR))

Moments
N20Sum Weights20
Mean35250Sum Observations705000
Std Deviation25835.2574Variance667460526
Skewness1.2065323Kurtosis0.64882935
Uncorrected SS3.7533E10Corrected SS1.26818E10
Coeff Variation73.2915104Std Error Mean5776.93918
Basic Statistical Measures
LocationVariability
Mean35250.00Std Deviation25835
Median28500.00Variance667460526
Mode.Range89000
  Interquartile Range34000
Basic Confidence Limits Assuming Normality
ParameterEstimate95% Confidence Limits
Mean352502315947341
Std Deviation258351964737734
Variance6674605263860228851423873186
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt6.101847Pr > |t|<.0001
SignM10Pr >= |M|<.0001
Signed RankS105Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max98000
99%98000
95%91500
90%78500
75% Q348500
50% Median28500
25% Q114500
10%11500
5%10000
1%9000
0% Min9000
Extreme Observations
LowestHighest
ValueObsValueObs
900095200010
1100015600003
1200057200020
1300018850001
14000129800016

The UNIVARIATE Procedure

Histogram for Monthly_Income


The UNIVARIATE Procedure

Fitted Normal Distribution for Monthly_Income (Monthly Income (INR))

Parameters for Normal Distribution
ParameterSymbolEstimate
MeanMu35250
Std DevSigma25835.26
Goodness-of-Fit Tests for Normal Distribution
TestStatisticp Value
Kolmogorov-SmirnovD0.20386038Pr > D0.028
Cramer-von MisesW-Sq0.17272625Pr > W-Sq0.010
Anderson-DarlingA-Sq1.01942059Pr > A-Sq0.009
Quantiles for Normal Distribution
PercentQuantile
ObservedEstimated
1.09000.00-24851.80
5.010000.00-7245.22
10.011500.002140.79
25.014500.0017824.38
50.028500.0035250.00
75.048500.0052675.62
90.078500.0068359.21
95.091500.0077745.22
99.098000.0095351.80

The UNIVARIATE Procedure

Variable: Monthly_Savings (Monthly Savings (INR))

Moments
N20Sum Weights20
Mean5070Sum Observations101400
Std Deviation4984.61845Variance24846421.1
Skewness1.91792763Kurtosis3.66741326
Uncorrected SS986180000Corrected SS472082000
Coeff Variation98.3159457Std Error Mean1114.59457
Basic Statistical Measures
LocationVariability
Mean5070.000Std Deviation4985
Median3250.000Variance24846421
Mode2000.000Range19500
  Interquartile Range4500

Note: The mode displayed is the smallest of 4 modes with a count of 2.

Basic Confidence Limits Assuming Normality
ParameterEstimate95% Confidence Limits
Mean507027377403
Std Deviation498537917280
Variance248464211436981953004112
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt4.548739Pr > |t|0.0002
SignM10Pr >= |M|<.0001
Signed RankS105Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max20000
99%20000
95%17500
90%12500
75% Q36500
50% Median3250
25% Q12000
10%950
5%600
1%500
0% Min500
Extreme Observations
LowestHighest
ValueObsValueObs
5009700010
7001580003
1200121000020
150018150001
2000132000016

The UNIVARIATE Procedure

Variable: Financial_Literacy (Financial Literacy Score (1-10))

Moments
N20Sum Weights20
Mean5.905Sum Observations118.1
Std Deviation1.20414853Variance1.44997368
Skewness0.06215618Kurtosis-0.7142734
Uncorrected SS724.93Corrected SS27.5495
Coeff Variation20.3920158Std Error Mean0.2692558
Basic Statistical Measures
LocationVariability
Mean5.905000Std Deviation1.20415
Median5.900000Variance1.44997
Mode.Range4.30000
  Interquartile Range1.85000
Basic Confidence Limits Assuming Normality
ParameterEstimate95% Confidence Limits
Mean5.905005.341446.46856
Std Deviation1.204150.915741.75875
Variance1.449970.838593.09318
Tests for Location: Mu0=0
TestStatisticp Value
Student's tt21.93082Pr > |t|<.0001
SignM10Pr >= |M|<.0001
Signed RankS105Pr >= |S|<.0001
Quantiles (Definition 5)
LevelQuantile
100% Max8.10
99%8.10
95%7.95
90%7.60
75% Q36.80
50% Median5.90
25% Q14.95
10%4.30
5%3.95
1%3.80
0% Min3.80
Extreme Observations
LowestHighest
ValueObsValueObs
3.896.910
4.1157.03
4.5187.420
4.7127.81
4.958.116

4) PROC SQL EXAMPLES

proc sql;

    title 'Average Monthly Income by State';

    create table avg_income_state as

    select State, count(*) as N, round(mean(Monthly_Income),2) as Avg_Income, 

           round(sum(Monthly_Savings),2) as Total_Savings

    from money_in_india

    group by State

    order by Avg_Income desc;

quit;

proc print;run;

Output:

Average Monthly Income by State

ObsStateNAvg_IncomeTotal_Savings
1Haryana19800020000
2Maharashtra18500015000
3Goa17200010000
4Karnataka1600008000
5Telangana1520007000
6Delhi1450005000
7Tamil Nadu1350006000
8Gujarat1330003500
9Punjab1300004000
10Andhra Pradesh1290002500
11West Bengal1280003000
12Assam1260003000
13Kerala1220004000
14Madhya Pradesh1160002000
15Rajasthan1150002500
16Odisha1140001200
17Chhattisgarh1130001500
18Uttar Pradesh1120002000
19Jharkhand111000700
20Bihar19000500

proc sql;

    create table digital_adoption as

    select Urban_Rural,

           mean(Digital_Share) as Avg_Digital_Share format=8.2,

           mean(Cash_Share) as Avg_Cash_Share format=8.2,

           mean(Financial_Literacy) as Avg_Fin_Lit format=8.2

    from money_in_india

    group by Urban_Rural;

quit;

proc print;run;

Output:

ObsUrban_RuralAvg_Digital_ShareAvg_Cash_ShareAvg_Fin_Lit
1Rural22.4377.574.60
2Urban62.4637.546.61


proc sql;

    create table similar_income_pairs as

    select a.HouseholdID as H1, b.HouseholdID as H2, a.Income_Tier,

           a.Monthly_Income as Income1, b.Monthly_Income as Income2

    from money_in_india a, money_in_india b

    where a.Income_Tier = b.Income_Tier and a.HouseholdID < b.HouseholdID;

quit;

proc print;run;

Output:

ObsH1H2Income_TierIncome1Income2
1HH001HH020Upper-Mid85000.0072000.00
2HH001HH017Upper-Mid85000.0030000.00
3HH001HH016Upper-Mid85000.0098000.00
4HH001HH011Upper-Mid85000.0033000.00
5HH001HH010Upper-Mid85000.0052000.00
6HH001HH006Upper-Mid85000.0035000.00
7HH001HH003Upper-Mid85000.0060000.00
8HH001HH002Upper-Mid85000.0045000.00
9HH002HH020Upper-Mid45000.0072000.00
10HH002HH017Upper-Mid45000.0030000.00
11HH002HH016Upper-Mid45000.0098000.00
12HH002HH011Upper-Mid45000.0033000.00
13HH002HH010Upper-Mid45000.0052000.00
14HH002HH006Upper-Mid45000.0035000.00
15HH002HH003Upper-Mid45000.0060000.00
16HH003HH020Upper-Mid60000.0072000.00
17HH003HH017Upper-Mid60000.0030000.00
18HH003HH016Upper-Mid60000.0098000.00
19HH003HH011Upper-Mid60000.0033000.00
20HH003HH010Upper-Mid60000.0052000.00
21HH003HH006Upper-Mid60000.0035000.00
22HH004HH019Mid22000.0029000.00
23HH004HH014Mid22000.0026000.00
24HH004HH013Mid22000.0016000.00
25HH004HH008Mid22000.0015000.00
26HH004HH007Mid22000.0028000.00
27HH005HH018Low12000.0013000.00
28HH005HH015Low12000.0011000.00
29HH005HH012Low12000.0014000.00
30HH005HH009Low12000.009000.00
31HH006HH020Upper-Mid35000.0072000.00
32HH006HH017Upper-Mid35000.0030000.00
33HH006HH016Upper-Mid35000.0098000.00
34HH006HH011Upper-Mid35000.0033000.00
35HH006HH010Upper-Mid35000.0052000.00
36HH007HH019Mid28000.0029000.00
37HH007HH014Mid28000.0026000.00
38HH007HH013Mid28000.0016000.00
39HH007HH008Mid28000.0015000.00
40HH008HH019Mid15000.0029000.00
41HH008HH014Mid15000.0026000.00
42HH008HH013Mid15000.0016000.00
43HH009HH018Low9000.0013000.00
44HH009HH015Low9000.0011000.00
45HH009HH012Low9000.0014000.00
46HH010HH020Upper-Mid52000.0072000.00
47HH010HH017Upper-Mid52000.0030000.00
48HH010HH016Upper-Mid52000.0098000.00
49HH010HH011Upper-Mid52000.0033000.00
50HH011HH020Upper-Mid33000.0072000.00
51HH011HH017Upper-Mid33000.0030000.00
52HH011HH016Upper-Mid33000.0098000.00
53HH012HH018Low14000.0013000.00
54HH012HH015Low14000.0011000.00
55HH013HH019Mid16000.0029000.00
56HH013HH014Mid16000.0026000.00
57HH014HH019Mid26000.0029000.00
58HH015HH018Low11000.0013000.00
59HH016HH020Upper-Mid98000.0072000.00
60HH016HH017Upper-Mid98000.0030000.00
61HH017HH020Upper-Mid30000.0072000.00


5) PROC REPORT, PROC TABULATE, TRANSPOSE

proc report data=avg_income_state nowd headline;

    column State N Avg_Income Total_Savings;

    define State / group 'State';

    define N / 'Count';

    define Avg_Income / analysis format=comma10.2 'Avg Income (INR)';

    define Total_Savings / analysis format=comma12.2 'Total Savings (INR)';

run;

Output:

StateCountAvg Income (INR)Total Savings (INR)
Andhra Pradesh129,000.002,500.00
Assam126,000.003,000.00
Bihar19,000.00500.00
Chhattisgarh113,000.001,500.00
Delhi145,000.005,000.00
Goa172,000.0010,000.00
Gujarat133,000.003,500.00
Haryana198,000.0020,000.00
Jharkhand111,000.00700.00
Karnataka160,000.008,000.00
Kerala122,000.004,000.00
Madhya Pradesh116,000.002,000.00
Maharashtra185,000.0015,000.00
Odisha114,000.001,200.00
Punjab130,000.004,000.00
Rajasthan115,000.002,500.00
Tamil Nadu135,000.006,000.00
Telangana152,000.007,000.00
Uttar Pradesh112,000.002,000.00
West Bengal128,000.003,000.00


proc tabulate data=money_in_india;

    class Income_Tier Urban_Rural;

    var Monthly_Income;

    table Income_Tier all,

          Urban_Rural*(Monthly_Income*(n mean*format=8.2));

    keylabel n='Count' mean='Avg Income';

run;

Output:

 Urban_Rural
RuralUrban
Monthly Income (INR)Monthly Income (INR)
CountAvg IncomeCountAvg Income
Income_Tier511800.00..
Low
Mid215500.00426250.00
Upper-Mid..956666.67
All712857.141347307.69


proc sort data=money_in_india out=_sorted;

     by State; 

run;

proc transpose data=_sorted out=trans_incomes prefix=Income_;

    by State;

    id HouseholdID;

    var Monthly_Income;

run;

proc print;run;

Output:

ObsState_NAME__LABEL_Income_HH019Income_HH014Income_HH009Income_HH018Income_HH002Income_HH020Income_HH011Income_HH016Income_HH015Income_HH003Income_HH004Income_HH013Income_HH001Income_HH012Income_HH017Income_HH008Income_HH006Income_HH010Income_HH005Income_HH007
1Andhra PradeshMonthly_IncomeMonthly Income (INR)29000.00...................
2AssamMonthly_IncomeMonthly Income (INR).26000.00..................
3BiharMonthly_IncomeMonthly Income (INR)..9000.00.................
4ChhattisgarhMonthly_IncomeMonthly Income (INR)...13000.00................
5DelhiMonthly_IncomeMonthly Income (INR)....45000.00...............
6GoaMonthly_IncomeMonthly Income (INR).....72000.00..............
7GujaratMonthly_IncomeMonthly Income (INR)......33000.00.............
8HaryanaMonthly_IncomeMonthly Income (INR).......98000.00............
9JharkhandMonthly_IncomeMonthly Income (INR)........11000.00...........
10KarnatakaMonthly_IncomeMonthly Income (INR).........60000.00..........
11KeralaMonthly_IncomeMonthly Income (INR)..........22000.00.........
12Madhya PradeshMonthly_IncomeMonthly Income (INR)...........16000.00........
13MaharashtraMonthly_IncomeMonthly Income (INR)............85000.00.......
14OdishaMonthly_IncomeMonthly Income (INR).............14000.00......
15PunjabMonthly_IncomeMonthly Income (INR)..............30000.00.....
16RajasthanMonthly_IncomeMonthly Income (INR)...............15000.00....
17Tamil NaduMonthly_IncomeMonthly Income (INR)................35000.00...
18TelanganaMonthly_IncomeMonthly Income (INR).................52000.00..
19Uttar PradeshMonthly_IncomeMonthly Income (INR)..................12000.00.
20West BengalMonthly_IncomeMonthly Income (INR)...................28000.00


6) MACROS — reusable reports and QC

%macro summary_by(categorical=);

    %put NOTE: Running summary_by for &categorical.;

    proc means data=money_in_india n mean median std min max;

        class &categorical.;

        var Monthly_Income Monthly_Savings Financial_Literacy;

    run;

%mend summary_by;


%summary_by(categorical=Income_Tier)

Output:

The MEANS Procedure

Income_TierN ObsVariableLabelNMeanMedianStd DevMinimumMaximum
Low5
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
5
5
5
11800.00
1180.00
4.4000000
12000.00
1200.00
4.5000000
1923.54
605.8052492
0.4472136
9000.00
500.0000000
3.8000000
14000.00
2000.00
4.9000000
Mid6
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
6
6
6
22666.67
2833.33
5.5833333
24000.00
2750.00
5.6500000
6055.30
683.1300511
0.4308906
15000.00
2000.00
5.0000000
29000.00
4000.00
6.2000000
Upper-Mid9
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
9
9
9
56666.67
8722.22
6.9555556
52000.00
7000.00
6.9000000
24124.68
5506.31
0.7019813
30000.00
3500.00
6.0000000
98000.00
20000.00
8.1000000

%summary_by(categorical=Urban_Rural)

Output:

The MEANS Procedure

Urban_RuralN ObsVariableLabelNMeanMedianStd DevMinimumMaximum
Rural7
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
7
7
7
12857.14
1485.71
4.6000000
13000.00
1500.00
4.7000000
2410.30
733.5497516
0.5033223
9000.00
500.0000000
3.8000000
16000.00
2500.00
5.2000000
Urban13
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
13
13
13
47307.69
7000.00
6.6076923
35000.00
5000.00
6.4000000
24574.32
5248.02
0.8004806
22000.00
2500.00
5.6000000
98000.00
20000.00
8.1000000

%summary_by(categorical=Bank_Type)

Output:

The MEANS Procedure

Bank_TypeN ObsVariableLabelNMeanMedianStd DevMinimumMaximum
Cooperative5
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
5
5
5
14000.00
1840.00
4.8600000
14000.00
2000.00
4.9000000
1581.14
502.9910536
0.2701851
12000.00
1200.00
4.5000000
16000.00
2500.00
5.2000000
No Bank2
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
2
2
2
10000.00
600.0000000
3.9500000
10000.00
600.0000000
3.9500000
1414.21
141.4213562
0.2121320
9000.00
500.0000000
3.8000000
11000.00
700.0000000
4.1000000
Private Bank8
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
8
8
8
57375.00
8937.50
6.9250000
56000.00
7500.00
6.9500000
26272.95
5978.76
0.8614771
28000.00
2500.00
5.7000000
98000.00
20000.00
8.1000000
Public Bank5
Monthly_Income
Monthly_Savings
Financial_Literacy
Monthly Income (INR)
Monthly Savings (INR)
Financial Literacy Score (1-10)
5
5
5
31200.00
3900.00
6.1000000
30000.00
4000.00
6.2000000
8757.85
741.6198487
0.3162278
22000.00
3000.00
5.6000000
45000.00
5000.00
6.4000000

%macro make_report(state=);

    %put INFO: Creating report for &state.;

    

    proc sql;

        create table report_&state. as

        select * 

        from money_in_india

        where State = "&state.";

    quit;

    

    proc means data=report_&state. n mean std median;

        var Monthly_Income Monthly_Savings Digital_Share;

    run;

    

    proc freq data=report_&state.;

        tables Income_Tier Urban_Rural / nocum nopercent;

    run;

%mend make_report;


%make_report(state=Maharashtra)

Output:

The MEANS Procedure

VariableLabelNMeanStd DevMedian
Monthly_Income
Monthly_Savings
Digital_Share
Monthly Income (INR)
Monthly Savings (INR)
Digital Share Percentage
1
1
1
85000.00
15000.00
80.0000000
.
.
.
85000.00
15000.00
80.0000000

The FREQ Procedure

Income_TierFrequency
Upper-Mid1
Urban_RuralFrequency
Urban1

%make_report(state=Kerala)

Output:

The MEANS Procedure

VariableLabelNMeanStd DevMedian
Monthly_Income
Monthly_Savings
Digital_Share
Monthly Income (INR)
Monthly Savings (INR)
Digital Share Percentage
1
1
1
22000.00
4000.00
50.0000000
.
.
.
22000.00
4000.00
50.0000000

The FREQ Procedure

Income_TierFrequency
Mid1
Urban_RuralFrequency
Urban1

7) QC / VALIDATION CHECKS

data qc_checks;

    set money_in_india;

    sum_share = Cash_Share + Digital_Share;

    if missing(Cash_Share) or missing(Digital_Share) then flag_missing=1;

    else flag_missing=0;

    if abs(sum_share - 100) > 5 then flag_unbalanced=1; 

    else flag_unbalanced=0;

run;

proc print;run;

Output:

ObsHouseholdIDStateCityUrban_RuralIncome_SourceBank_TypePredominant_ExpenseMonthly_IncomeMonthly_SavingsCash_ShareDigital_ShareRemittance_AmountFinancial_LiteracySavings_RateIncome_Tiersum_shareflag_missingflag_unbalanced
1HH001MaharashtraMumbaiUrbanSalariedPrivate BankRent & Bills85000.0015000.0020.0080.000.007.800.17647Upper-Mid10000
2HH002DelhiNew DelhiUrbanSalariedPublic BankFood45000.005000.0030.0070.000.006.400.11111Upper-Mid10000
3HH003KarnatakaBengaluruUrbanSelf-EmployedPrivate BankEducation60000.008000.0025.0075.005000.007.000.13333Upper-Mid10000
4HH004KeralaThiruvananthapuramUrbanPensionerPublic BankHealthcare22000.004000.0050.0050.0010000.006.200.18182Mid10000
5HH005Uttar PradeshLucknowRuralAgricultureCooperativeBasic Needs12000.002000.0080.0020.002000.004.900.16667Low10000
6HH006Tamil NaduChennaiUrbanSalariedPrivate BankTransport35000.006000.0035.0065.000.006.700.17143Upper-Mid10000
7HH007West BengalKolkataUrbanSelf-EmployedPrivate BankFood28000.003000.0060.0040.000.005.800.10714Mid10000
8HH008RajasthanJaipurRuralAgricultureCooperativeUtilities15000.002500.0070.0030.000.005.200.16667Mid10000
9HH009BiharPatnaRuralLaborNo BankCash Expenses9000.00500.0090.0010.000.003.800.05556Low10000
10HH010TelanganaHyderabadUrbanSalariedPrivate BankEntertainment52000.007000.0030.0070.000.006.900.13462Upper-Mid10000
11HH011GujaratAhmedabadUrbanSelf-EmployedPublic BankFood33000.003500.0045.0055.000.006.000.10606Upper-Mid10000
12HH012OdishaBhubaneswarRuralAgricultureCooperativeBasic Needs14000.001200.0075.0025.000.004.700.08571Low10000
13HH013Madhya PradeshBhopalRuralAgricultureCooperativeEducation16000.002000.0065.0035.000.005.000.12500Mid10000
14HH014AssamGuwahatiUrbanSalariedPublic BankTransport26000.003000.0040.0060.000.005.600.11538Mid10000
15HH015JharkhandRanchiRuralLaborNo BankCash Expenses11000.00700.0085.0015.000.004.100.06364Low10000
16HH016HaryanaGurugramUrbanSalariedPrivate BankRent & Bills98000.0020000.0022.0078.000.008.100.20408Upper-Mid10000
17HH017PunjabChandigarhUrbanPensionerPublic BankHealthcare30000.004000.0048.0052.000.006.300.13333Upper-Mid10000
18HH018ChhattisgarhRaipurRuralAgricultureCooperativeBasic Needs13000.001500.0078.0022.000.004.500.11538Low10000
19HH019Andhra PradeshVijayawadaUrbanSelf-EmployedPrivate BankEducation29000.002500.0055.0045.000.005.700.08621Mid10000
20HH020GoaPanajiUrbanTourismPrivate BankEntertainment72000.0010000.0028.0072.0015000.007.400.13889Upper-Mid10000


proc freq data=qc_checks;

   tables flag_missing flag_unbalanced;

 run;

Output:

The FREQ Procedure

flag_missingFrequencyPercentCumulative
Frequency
Cumulative
Percent
020100.0020100.00
flag_unbalancedFrequencyPercentCumulative
Frequency
Cumulative
Percent
020100.0020100.00

proc print data=qc_checks;

    where flag_unbalanced=1 or flag_missing=1; 

   var HouseholdID State Cash_Share Digital_Share sum_share; 

run;

Log:

NOTE: No observations were selected from data set WORK.QC_CHECKS.
NOTE: There were 0 observations read from the data set WORK.QC_CHECKS.
WHERE (flag_unbalanced=1) or (flag_missing=1);
NOTE: PROCEDURE PRINT used (Total process time):
real time 0.00 seconds
user cpu time 0.00 seconds
system cpu time 0.00 seconds
memory 911.12k
OS Memory 24232.00k
Timestamp 08/19/2025 12:56:01 PM
Step Count 248 Switch Count 0
Page Faults 0
Page Reclaims 84
Page Swaps 0
Voluntary Context Switches 0
Involuntary Context Switches 0
Block Input Operations 0
Block Output Operations 8

8) ADVANCED PROC SQL + JOIN 

data state_macro;

    length State $20.;

    input State :$20. Avg_State_Income Avg_Fin_Lit Rate_Digital;

    datalines;

Maharashtra 65000 7.2 75

Delhi 54000 6.8 72

Karnataka 60000 6.9 70

Kerala 32000 6.3 68

Uttar Pradesh 15000 4.6 35

Tamil Nadu 42000 6.5 60

West Bengal 30000 5.7 50

Rajasthan 18000 4.9 40

Bihar 9000 3.6 20

Telangana 50000 6.8 68

Gujarat 40000 6.1 58

Odisha 16000 4.5 38

Madhya Pradesh 17000 4.8 36

Assam 25000 5.5 45

Jharkhand 11000 4.2 30

Haryana 70000 7.5 74

Punjab 35000 6.2 62

Chhattisgarh 14000 4.4 34

Andhra Pradesh 30000 5.9 55

Goa 68000 7.0 80

;

run;

proc print;run;

Output:

ObsStateAvg_State_IncomeAvg_Fin_LitRate_Digital
1Maharashtra650007.275.0
2Delhi540006.872.0
3Karnataka600006.970.0
4Kerala320006.368.0
5Uttar.15000.04.6
6Tamil.42000.06.5
7West.30000.05.7
8Rajasthan180004.940.0
9Bihar90003.620.0
10Telangana500006.868.0
11Gujarat400006.158.0
12Odisha160004.538.0
13Madhya.17000.04.8
14Assam250005.545.0
15Jharkhand110004.230.0
16Haryana700007.574.0
17Punjab350006.262.0
18Chhattisgarh140004.434.0
19Andhra.30000.05.9
20Goa680007.080.0


proc sql;

    create table household_macro as

    select a.*, b.Avg_State_Income, b.Avg_Fin_Lit, b.Rate_Digital

    from money_in_india a left join state_macro b

    on a.State = b.State;

quit;

proc print;

run;


proc sql;

    create table below_state_avg as

    select HouseholdID, State, Monthly_Income, Avg_State_Income

    from household_macro

    where Monthly_Income < Avg_State_Income

    order by State, Monthly_Income;

quit;


proc print data=below_state_avg; run;

Output:

ObsHouseholdIDStateMonthly_IncomeAvg_State_Income
1HH018Chhattisgarh13000.0014000
2HH002Delhi45000.0054000
3HH011Gujarat33000.0040000
4HH004Kerala22000.0032000
5HH012Odisha14000.0016000
6HH017Punjab30000.0035000
7HH008Rajasthan15000.0018000


9) BASIC VISUALIZATION (requires SAS ODS Graphics)

ods graphics on;

proc sgplot data=money_in_india;

    vbar Income_Tier / response=Monthly_Income stat=mean;

    title 'Average Monthly Income by Income Tier';

run;

ods graphics off;

Output:

The SGPlot Procedure


10) SAVING RESULTS and CLEANUP

proc datasets library=work; 

    save avg_income_state digital_adoption household_macro;

quit;

Output:

Directory
LibrefWORK
EngineV9
Physical Name/saswork/SAS_workB994000181B7_odaws01-apse1-2.oda.sas.com/SAS_work1C21000181B7_odaws01-apse1-2.oda.sas.com
Filename/saswork/SAS_workB994000181B7_odaws01-apse1-2.oda.sas.com/SAS_work1C21000181B7_odaws01-apse1-2.oda.sas.com
Inode Number1081511
Access Permissionrwx------
Owner Nameu63247146
File Size4KB
File Size (bytes)4096
#NameMember TypeFile SizeLast Modified
1AVG_INCOME_STATEDATA256KB08/19/2025 12:39:33
2BELOW_STATE_AVGDATA256KB08/19/2025 12:57:37
3DIGITAL_ADOPTIONDATA256KB08/19/2025 12:55:21
4FORMATSCATALOG24KB08/19/2025 12:32:48
5HOUSEHOLD_MACRODATA256KB08/19/2025 12:57:37
6MONEY_IN_INDIADATA384KB08/19/2025 12:55:21
7QC_CHECKSDATA256KB08/19/2025 12:54:12
8REGSTRYITEMSTOR32KB08/19/2025 12:04:25
9REPORT_KERALADATA256KB08/19/2025 12:55:21
10REPORT_MAHARASHTRADATA256KB08/19/2025 12:55:21
11SASGOPTCATALOG12KB08/19/2025 12:04:25
12SASMAC1CATALOG212KB08/19/2025 12:04:25
13SASMAC2CATALOG20KB08/19/2025 12:58:06
14SASMAC3CATALOG20KB08/19/2025 12:04:25
15SASMAC4CATALOG20KB08/19/2025 12:58:35
16SASMAC5CATALOG20KB08/19/2025 12:04:25
17SASMAC6CATALOG20KB08/19/2025 12:04:25
18SASMAC7CATALOG20KB08/19/2025 12:04:25
19SASMAC8CATALOG20KB08/19/2025 12:04:25
20SASMAC9CATALOG20KB08/19/2025 12:04:25
21SASMACRCATALOG20KB08/19/2025 12:58:06
22SIMILAR_INCOME_PAIRSDATA256KB08/19/2025 12:55:21
23STATE_MACRODATA256KB08/19/2025 12:57:01
24TRANS_INCOMESDATA256KB08/19/2025 12:55:21
25_SORTEDDATA256KB08/19/2025 12:55:21




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





--->PLEASE FOLLOW OUR BLOG FOR MORE INFORMATION.
--->PLEASE DO COMMENTS AND SHARE OUR BLOG.

PLEASE FOLLOW OUR TELEGRAM CHANNEL CLICK HERE

PLEASE FOLLOW OUR FACEBOOK PAGE  CLICK HERE

PLEASE FOLLOW OUR INSTAGRAM PAGE CLICK HERE




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