260.COMPARING MOBILE SPECIFICATIONS & SALES IN INDIA USING PROC PRINT | PROC SORT | PROC MEANS | PROC FREQ | PROC REPORT | PROC TRANSPOSE | PROC SQL | SAS MACROS
- Get link
- X
- Other Apps
COMPARING MOBILE SPECIFICATIONS & SALES IN INDIA USING PROC PRINT | PROC SORT | PROC MEANS | PROC FREQ | PROC REPORT | PROC TRANSPOSE | PROC SQL | SAS MACROS
/*Compare various mobiles in India using multiple SAS techniques*/
STEP 1: Creating the MOBILES dataset
options nocenter;
data mobiles;
length Mobile_ID 8 Brand $20 Model $30 OS $15 Storage_GB 8 RAM_GB 8
Camera_MP 8 Battery_mAh 8 Price_INR 8 Launch_Year 8;
infile datalines dlm=',';
input Mobile_ID Brand $ Model $ OS $ Storage_GB RAM_GB Camera_MP Battery_mAh Price_INR Launch_Year;
datalines;
1,Samsung,GalaxyS23,Android,256,8,50,4700,79999,2023
2,Apple,iPhone14,iOS,128,6,48,3279,79999,2022
3,Xiaomi,Mi13Pro,Android,256,12,50,4820,59999,2023
4,OnePlus,OnePlus11,Android,256,16,50,5000,56999,2023
5,Vivo,X90Pro,Android,256,12,50,4870,62999,2023
6,Oppo,FindX6,Android,256,12,50,4820,64999,2023
7,Realme,GTNeo5,Android,256,12,50,5000,38999,2023
8,Motorola,Edge40,Android,256,8,50,4400,29999,2023
9,Nothing,Phone1,Android,128,8,50,4500,31999,2022
10,Poco,F5Pro,Android,256,12,64,5160,39999,2023
11,Apple,iPhone15,iOS,256,8,48,3279,89999,2023
12,Samsung,GalaxyZFlip5,Android,256,8,12,3700,99999,2023
13,Apple,iPhone13,iOS,128,4,12,3227,58999,2021
14,OnePlus,OnePlusNord3,Android,256,12,50,5000,33999,2023
15,Vivo,V27Pro,Android,256,8,50,4600,37999,2023
16,Oppo,Reno10Pro,Android,256,12,64,4600,39999,2023
17,Realme,11ProPlus,Android,256,12,200,5000,29999,2023
18,Motorola,MotoG73,Android,128,8,50,5000,18999,2023
19,Xiaomi,RedmiNote12,Android,128,6,48,5000,16999,2023
20,Nokia,X30,Android,256,8,50,4200,36999,2023
21,Samsung,GalaxyA54,Android,128,8,50,5000,38999,2023
22,Apple,iPhoneSE3,iOS,128,4,12,2018,42999,2022
23,Xiaomi,RedmiK60,Android,256,12,64,5500,45999,2023
24,OnePlus,OnePlus10T,Android,256,16,50,4800,49999,2022
25,Vivo,Y100,Android,128,8,64,4500,24999,2023
;
run;
proc print;run;
Output:
Obs | Mobile_ID | Brand | Model | OS | Storage_GB | RAM_GB | Camera_MP | Battery_mAh | Price_INR | Launch_Year |
---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | Samsung | GalaxyS23 | Android | 256 | 8 | 50 | 4700 | 79999 | 2023 |
2 | 2 | Apple | iPhone14 | iOS | 128 | 6 | 48 | 3279 | 79999 | 2022 |
3 | 3 | Xiaomi | Mi13Pro | Android | 256 | 12 | 50 | 4820 | 59999 | 2023 |
4 | 4 | OnePlus | OnePlus11 | Android | 256 | 16 | 50 | 5000 | 56999 | 2023 |
5 | 5 | Vivo | X90Pro | Android | 256 | 12 | 50 | 4870 | 62999 | 2023 |
6 | 6 | Oppo | FindX6 | Android | 256 | 12 | 50 | 4820 | 64999 | 2023 |
7 | 7 | Realme | GTNeo5 | Android | 256 | 12 | 50 | 5000 | 38999 | 2023 |
8 | 8 | Motorola | Edge40 | Android | 256 | 8 | 50 | 4400 | 29999 | 2023 |
9 | 9 | Nothing | Phone1 | Android | 128 | 8 | 50 | 4500 | 31999 | 2022 |
10 | 10 | Poco | F5Pro | Android | 256 | 12 | 64 | 5160 | 39999 | 2023 |
11 | 11 | Apple | iPhone15 | iOS | 256 | 8 | 48 | 3279 | 89999 | 2023 |
12 | 12 | Samsung | GalaxyZFlip5 | Android | 256 | 8 | 12 | 3700 | 99999 | 2023 |
13 | 13 | Apple | iPhone13 | iOS | 128 | 4 | 12 | 3227 | 58999 | 2021 |
14 | 14 | OnePlus | OnePlusNord3 | Android | 256 | 12 | 50 | 5000 | 33999 | 2023 |
15 | 15 | Vivo | V27Pro | Android | 256 | 8 | 50 | 4600 | 37999 | 2023 |
16 | 16 | Oppo | Reno10Pro | Android | 256 | 12 | 64 | 4600 | 39999 | 2023 |
17 | 17 | Realme | 11ProPlus | Android | 256 | 12 | 200 | 5000 | 29999 | 2023 |
18 | 18 | Motorola | MotoG73 | Android | 128 | 8 | 50 | 5000 | 18999 | 2023 |
19 | 19 | Xiaomi | RedmiNote12 | Android | 128 | 6 | 48 | 5000 | 16999 | 2023 |
20 | 20 | Nokia | X30 | Android | 256 | 8 | 50 | 4200 | 36999 | 2023 |
21 | 21 | Samsung | GalaxyA54 | Android | 128 | 8 | 50 | 5000 | 38999 | 2023 |
22 | 22 | Apple | iPhoneSE3 | iOS | 128 | 4 | 12 | 2018 | 42999 | 2022 |
23 | 23 | Xiaomi | RedmiK60 | Android | 256 | 12 | 64 | 5500 | 45999 | 2023 |
24 | 24 | OnePlus | OnePlus10T | Android | 256 | 16 | 50 | 4800 | 49999 | 2022 |
25 | 25 | Vivo | Y100 | Android | 128 | 8 | 64 | 4500 | 24999 | 2023 |
STEP 2: Creating the SALES dataset
data sales;
length Sale_ID 8 Mobile_ID 8 Units_Sold 8 Region $15 Quarter $2;
infile datalines dlm=',';
input Sale_ID Mobile_ID Units_Sold Region $ Quarter $;
datalines;
1,1,5000,North,Q1
2,2,4500,North,Q1
3,3,6000,West,Q1
4,4,5500,South,Q1
5,5,4800,East,Q1
6,6,3000,West,Q1
7,7,4200,North,Q1
8,8,2500,East,Q1
9,9,3200,West,Q1
10,10,2800,South,Q1
11,11,4900,North,Q2
12,12,1500,West,Q2
13,13,5200,South,Q2
14,14,3700,East,Q2
15,15,3900,North,Q2
16,16,4100,West,Q2
17,17,3300,South,Q2
18,18,3700,East,Q2
19,19,4200,North,Q2
20,20,2500,South,Q2
21,21,3800,North,Q3
22,22,3000,West,Q3
23,23,2100,South,Q3
24,24,2700,East,Q3
25,25,2300,North,Q3
;
run;
proc print;run;
Output:
Obs | Sale_ID | Mobile_ID | Units_Sold | Region | Quarter |
---|---|---|---|---|---|
1 | 1 | 1 | 5000 | North | Q1 |
2 | 2 | 2 | 4500 | North | Q1 |
3 | 3 | 3 | 6000 | West | Q1 |
4 | 4 | 4 | 5500 | South | Q1 |
5 | 5 | 5 | 4800 | East | Q1 |
6 | 6 | 6 | 3000 | West | Q1 |
7 | 7 | 7 | 4200 | North | Q1 |
8 | 8 | 8 | 2500 | East | Q1 |
9 | 9 | 9 | 3200 | West | Q1 |
10 | 10 | 10 | 2800 | South | Q1 |
11 | 11 | 11 | 4900 | North | Q2 |
12 | 12 | 12 | 1500 | West | Q2 |
13 | 13 | 13 | 5200 | South | Q2 |
14 | 14 | 14 | 3700 | East | Q2 |
15 | 15 | 15 | 3900 | North | Q2 |
16 | 16 | 16 | 4100 | West | Q2 |
17 | 17 | 17 | 3300 | South | Q2 |
18 | 18 | 18 | 3700 | East | Q2 |
19 | 19 | 19 | 4200 | North | Q2 |
20 | 20 | 20 | 2500 | South | Q2 |
21 | 21 | 21 | 3800 | North | Q3 |
22 | 22 | 22 | 3000 | West | Q3 |
23 | 23 | 23 | 2100 | South | Q3 |
24 | 24 | 24 | 2700 | East | Q3 |
25 | 25 | 25 | 2300 | North | Q3 |
STEP 3: PROC PRINT — Display datasets
proc print data=mobiles;
title "List of Mobiles in India - Specifications";
run;
Output:
List of Mobiles in India - Specifications
Obs | Mobile_ID | Brand | Model | OS | Storage_GB | RAM_GB | Camera_MP | Battery_mAh | Price_INR | Launch_Year |
---|---|---|---|---|---|---|---|---|---|---|
1 | 1 | Samsung | GalaxyS23 | Android | 256 | 8 | 50 | 4700 | 79999 | 2023 |
2 | 2 | Apple | iPhone14 | iOS | 128 | 6 | 48 | 3279 | 79999 | 2022 |
3 | 3 | Xiaomi | Mi13Pro | Android | 256 | 12 | 50 | 4820 | 59999 | 2023 |
4 | 4 | OnePlus | OnePlus11 | Android | 256 | 16 | 50 | 5000 | 56999 | 2023 |
5 | 5 | Vivo | X90Pro | Android | 256 | 12 | 50 | 4870 | 62999 | 2023 |
6 | 6 | Oppo | FindX6 | Android | 256 | 12 | 50 | 4820 | 64999 | 2023 |
7 | 7 | Realme | GTNeo5 | Android | 256 | 12 | 50 | 5000 | 38999 | 2023 |
8 | 8 | Motorola | Edge40 | Android | 256 | 8 | 50 | 4400 | 29999 | 2023 |
9 | 9 | Nothing | Phone1 | Android | 128 | 8 | 50 | 4500 | 31999 | 2022 |
10 | 10 | Poco | F5Pro | Android | 256 | 12 | 64 | 5160 | 39999 | 2023 |
title "Mobile Sales Data in India";
run;
Output:
Mobile Sales Data in India
Obs | Sale_ID | Mobile_ID | Units_Sold | Region | Quarter |
---|---|---|---|---|---|
1 | 1 | 1 | 5000 | North | Q1 |
2 | 2 | 2 | 4500 | North | Q1 |
3 | 3 | 3 | 6000 | West | Q1 |
4 | 4 | 4 | 5500 | South | Q1 |
5 | 5 | 5 | 4800 | East | Q1 |
6 | 6 | 6 | 3000 | West | Q1 |
7 | 7 | 7 | 4200 | North | Q1 |
8 | 8 | 8 | 2500 | East | Q1 |
9 | 9 | 9 | 3200 | West | Q1 |
10 | 10 | 10 | 2800 | South | Q1 |
STEP 4: PROC SORT — Sort mobiles by price (descending)
proc sort data=mobiles out=mobiles_sorted;
by descending Price_INR;
run;
title "Mobiles Sorted by Price (Highest First)";
proc print data=mobiles_sorted;
run;
Output:
Mobiles Sorted by Price (Highest First)
Obs | Mobile_ID | Brand | Model | OS | Storage_GB | RAM_GB | Camera_MP | Battery_mAh | Price_INR | Launch_Year |
---|---|---|---|---|---|---|---|---|---|---|
1 | 12 | Samsung | GalaxyZFlip5 | Android | 256 | 8 | 12 | 3700 | 99999 | 2023 |
2 | 11 | Apple | iPhone15 | iOS | 256 | 8 | 48 | 3279 | 89999 | 2023 |
3 | 1 | Samsung | GalaxyS23 | Android | 256 | 8 | 50 | 4700 | 79999 | 2023 |
4 | 2 | Apple | iPhone14 | iOS | 128 | 6 | 48 | 3279 | 79999 | 2022 |
5 | 6 | Oppo | FindX6 | Android | 256 | 12 | 50 | 4820 | 64999 | 2023 |
6 | 5 | Vivo | X90Pro | Android | 256 | 12 | 50 | 4870 | 62999 | 2023 |
7 | 3 | Xiaomi | Mi13Pro | Android | 256 | 12 | 50 | 4820 | 59999 | 2023 |
8 | 13 | Apple | iPhone13 | iOS | 128 | 4 | 12 | 3227 | 58999 | 2021 |
9 | 4 | OnePlus | OnePlus11 | Android | 256 | 16 | 50 | 5000 | 56999 | 2023 |
10 | 24 | OnePlus | OnePlus10T | Android | 256 | 16 | 50 | 4800 | 49999 | 2022 |
11 | 23 | Xiaomi | RedmiK60 | Android | 256 | 12 | 64 | 5500 | 45999 | 2023 |
12 | 22 | Apple | iPhoneSE3 | iOS | 128 | 4 | 12 | 2018 | 42999 | 2022 |
13 | 10 | Poco | F5Pro | Android | 256 | 12 | 64 | 5160 | 39999 | 2023 |
14 | 16 | Oppo | Reno10Pro | Android | 256 | 12 | 64 | 4600 | 39999 | 2023 |
15 | 7 | Realme | GTNeo5 | Android | 256 | 12 | 50 | 5000 | 38999 | 2023 |
16 | 21 | Samsung | GalaxyA54 | Android | 128 | 8 | 50 | 5000 | 38999 | 2023 |
17 | 15 | Vivo | V27Pro | Android | 256 | 8 | 50 | 4600 | 37999 | 2023 |
18 | 20 | Nokia | X30 | Android | 256 | 8 | 50 | 4200 | 36999 | 2023 |
19 | 14 | OnePlus | OnePlusNord3 | Android | 256 | 12 | 50 | 5000 | 33999 | 2023 |
20 | 9 | Nothing | Phone1 | Android | 128 | 8 | 50 | 4500 | 31999 | 2022 |
21 | 8 | Motorola | Edge40 | Android | 256 | 8 | 50 | 4400 | 29999 | 2023 |
22 | 17 | Realme | 11ProPlus | Android | 256 | 12 | 200 | 5000 | 29999 | 2023 |
23 | 25 | Vivo | Y100 | Android | 128 | 8 | 64 | 4500 | 24999 | 2023 |
24 | 18 | Motorola | MotoG73 | Android | 128 | 8 | 50 | 5000 | 18999 | 2023 |
25 | 19 | Xiaomi | RedmiNote12 | Android | 128 | 6 | 48 | 5000 | 16999 | 2023 |
STEP 5: PROC MEANS — Price and battery statistics
proc means data=mobiles mean min max;
var Price_INR Battery_mAh;
run;
Output:
The MEANS Procedure
Variable | Mean | Minimum | Maximum |
---|---|---|---|
Price_INR Battery_mAh | 48519.00 4478.92 | 16999.00 2018.00 | 99999.00 5500.00-0 |
STEP 6: PROC FREQ — OS type count
proc freq data=mobiles;
tables OS;
run;
Output:
The FREQ Procedure
OS | Frequency | Percent | Cumulative Frequency | Cumulative Percent |
---|---|---|---|---|
Android | 21 | 84.00 | 21 | 84.00 |
iOS | 4 | 16.00 | 25 | 100.00 |
STEP 7: PROC REPORT — Brand-wise price and storage summary
proc report data=mobiles nowd;
column Brand Price_INR Storage_GB;
define Brand / group;
define Price_INR / mean;
define Storage_GB / mean;
run;
Output:
Brand | Price_INR | Storage_GB |
---|---|---|
Apple | 67999 | 160 |
Motorola | 24499 | 192 |
Nokia | 36999 | 256 |
Nothing | 31999 | 128 |
OnePlus | 46999 | 256 |
Oppo | 52499 | 256 |
Poco | 39999 | 256 |
Realme | 34499 | 256 |
Samsung | 72999 | 213.33333 |
Vivo | 41999 | 213.33333 |
Xiaomi | 40999 | 213.33333 |
STEP 8: PROC TRANSPOSE — Reshape data for Year-wise analysis
proc transpose data=mobiles out=mobiles_transposed prefix=Mobile_;
by Launch_Year;
var Price_INR;
run;
proc print data=mobiles_transposed;run;
Output:
Obs | Launch_Year | _NAME_ | Mobile_1 | Mobile_2 | Mobile_3 | Mobile_4 | Mobile_5 | Mobile_6 | Mobile_7 | Mobile_8 |
---|---|---|---|---|---|---|---|---|---|---|
1 | 2023 | Price_INR | 79999 | . | . | . | . | . | . | . |
2 | 2022 | Price_INR | 79999 | . | . | . | . | . | . | . |
3 | 2023 | Price_INR | 59999 | 56999 | 62999 | 64999 | 38999 | 29999 | . | . |
4 | 2022 | Price_INR | 31999 | . | . | . | . | . | . | . |
5 | 2023 | Price_INR | 39999 | 89999 | 99999 | . | . | . | . | . |
6 | 2021 | Price_INR | 58999 | . | . | . | . | . | . | . |
7 | 2023 | Price_INR | 33999 | 37999 | 39999 | 29999 | 18999 | 16999 | 36999 | 38999 |
8 | 2022 | Price_INR | 42999 | . | . | . | . | . | . | . |
9 | 2023 | Price_INR | 45999 | . | . | . | . | . | . | . |
10 | 2022 | Price_INR | 49999 | . | . | . | . | . | . | . |
11 | 2023 | Price_INR | 24999 | . | . | . | . | . | . | . |
STEP 9: PROC SQL — Join mobiles & sales for revenue
proc sql;
create table mobile_revenue as
select m.Brand, m.Model, m.Price_INR, s.Units_Sold,
(m.Price_INR * s.Units_Sold) as Revenue
from mobiles m
join sales s
on m.Mobile_ID = s.Mobile_ID;
quit;
title "Mobile Revenue Calculation";
proc print data=mobile_revenue;
run;
Output:
Mobile Revenue Calculation
Obs | Brand | Model | Price_INR | Units_Sold | Revenue |
---|---|---|---|---|---|
1 | Samsung | GalaxyS23 | 79999 | 5000 | 399995000 |
2 | Apple | iPhone14 | 79999 | 4500 | 359995500 |
3 | Xiaomi | Mi13Pro | 59999 | 6000 | 359994000 |
4 | OnePlus | OnePlus11 | 56999 | 5500 | 313494500 |
5 | Vivo | X90Pro | 62999 | 4800 | 302395200 |
6 | Oppo | FindX6 | 64999 | 3000 | 194997000 |
7 | Realme | GTNeo5 | 38999 | 4200 | 163795800 |
8 | Motorola | Edge40 | 29999 | 2500 | 74997500 |
9 | Nothing | Phone1 | 31999 | 3200 | 102396800 |
10 | Poco | F5Pro | 39999 | 2800 | 111997200 |
11 | Apple | iPhone15 | 89999 | 4900 | 440995100 |
12 | Samsung | GalaxyZFlip5 | 99999 | 1500 | 149998500 |
13 | Apple | iPhone13 | 58999 | 5200 | 306794800 |
14 | OnePlus | OnePlusNord3 | 33999 | 3700 | 125796300 |
15 | Vivo | V27Pro | 37999 | 3900 | 148196100 |
16 | Oppo | Reno10Pro | 39999 | 4100 | 163995900 |
17 | Realme | 11ProPlus | 29999 | 3300 | 98996700 |
18 | Motorola | MotoG73 | 18999 | 3700 | 70296300 |
19 | Xiaomi | RedmiNote12 | 16999 | 4200 | 71395800 |
20 | Nokia | X30 | 36999 | 2500 | 92497500 |
21 | Samsung | GalaxyA54 | 38999 | 3800 | 148196200 |
22 | Apple | iPhoneSE3 | 42999 | 3000 | 128997000 |
23 | Xiaomi | RedmiK60 | 45999 | 2100 | 96597900 |
24 | OnePlus | OnePlus10T | 49999 | 2700 | 134997300 |
25 | Vivo | Y100 | 24999 | 2300 | 57497700 |
STEP 10: SAS Macro — Top Selling Mobiles by Units
%macro top_sellers(threshold);
proc sql;
select Brand, Model, Units_Sold
from mobile_revenue
where Units_Sold > &threshold
order by Units_Sold desc;
quit;
%mend;
%top_sellers(4000);
Output:
Brand | Model | Units_Sold |
---|---|---|
Xiaomi | Mi13Pro | 6000 |
OnePlus | OnePlus11 | 5500 |
Apple | iPhone13 | 5200 |
Samsung | GalaxyS23 | 5000 |
Apple | iPhone15 | 4900 |
Vivo | X90Pro | 4800 |
Apple | iPhone14 | 4500 |
Realme | GTNeo5 | 4200 |
Xiaomi | RedmiNote12 | 4200 |
Oppo | Reno10Pro | 4100 |
- Get link
- X
- Other Apps
Comments
Post a Comment