libname data '\\[Link].
uk\users\mhl1g18\mydocuments\SAS
Assignment\MANG6231_assignment';
/*Personally I don't like putting all variables in the same line without a
comma to separate them (It's hard to find errors). I decided to put only one
variable for each line.*/
/*The following is the process of input data. For simplicity, I decided to
drop the useless data first, so I don't need to modify those unnecessary
data.*/
DATA data.mhl1g18;
LENGTH
Qu_1_a 8
Qu_1_b 8
Qu_1_c 8
Qu_1_d 8
Qu_2_a 8
Qu_2_b 8
Qu_2_c 8
Qu_2_d 8
Qu_3_a 8
Qu_3_b 8
Qu_3_c 8
Qu_3_d 8
Qu_4_a 8
Qu_4_b 8
Qu_4_c 8
Qu_4_d 8
Qu_5 $ 40
Qu_6 $ 40
Qu_7 $ 40
Qu_8 8
Qu_10 $ 40
Qu_11 $ 40
Qu_12 $ 40 ;
DROP
Qu_9
Qu_13
Qu_14_a
Qu_14_b
Qu_15_a
Qu_15_b
Qu_15_c
Qu_15_d ;
INFILE '\\[Link]\users\mhl1g18\mydocuments\SAS
Assignment\MANG6231_assignment\[Link]'
DLM=',';
INPUT
Qu_1_a $
Qu_1_b $
Qu_1_c $
Qu_1_d $
Qu_2_a $
Qu_2_b $
Qu_2_c $
Qu_2_d $
Qu_3_a $
Qu_3_b $
Qu_3_c $
Qu_3_d $
Qu_4_a $
Qu_4_b $
Qu_4_c $
Qu_4_d $
Qu_5 $
Qu_6 $
Qu_7 $
Qu_8 $
Qu_9 $
Qu_10 $
Qu_11 $
Qu_12 $
Qu_13 $
Qu_14_a $
Qu_14_b $
Qu_15_a $
Qu_15_b $
Qu_15_c $
Qu_15_d $ ;
RUN;
/*I tried to use proc SQL command to modify data. This is the process to drop
all data which missing and wrong. For question 10-12, the modifying is a
little bit tricky since the SAS recognise these data in string format so I
cannot use 'between' command to sort out numeric value. So I listed all value
of the wrong data for SAS to sort.*/
PROC SQL;
CREATE TABLE data.mhl1g18_cleansing AS
SELECT Qu_1_a,
Qu_1_b,
Qu_1_c,
Qu_1_d,
Qu_2_a,
Qu_2_b,
Qu_2_c,
Qu_2_d,
Qu_3_a,
Qu_3_b,
Qu_3_c,
Qu_3_d,
Qu_4_a,
Qu_4_b,
Qu_4_c,
Qu_4_d,
Qu_5,
Qu_6,
Qu_7,
Qu_8,
Qu_10,
Qu_11,
Qu_12
FROM data.mhl1g18
WHERE Qu_1_a BETWEEN 1 AND 7
AND Qu_1_b BETWEEN 1 AND 7
AND Qu_1_c BETWEEN 1 AND 7
AND Qu_1_d BETWEEN 1 AND 7
AND Qu_2_a BETWEEN 1 AND 7
AND Qu_2_b BETWEEN 1 AND 7
AND Qu_2_c BETWEEN 1 AND 7
AND Qu_2_d BETWEEN 1 AND 7
AND Qu_3_a BETWEEN 1 AND 7
AND Qu_3_b BETWEEN 1 AND 7
AND Qu_3_c BETWEEN 1 AND 7
AND Qu_2_d BETWEEN 1 AND 7
AND Qu_3_a BETWEEN 1 AND 7
AND Qu_3_b BETWEEN 1 AND 7
AND Qu_3_c BETWEEN 1 AND 7
AND Qu_2_d BETWEEN 1 AND 7
AND Qu_3_a BETWEEN 1 AND 7
AND Qu_3_b BETWEEN 1 AND 7
AND Qu_3_c BETWEEN 1 AND 7
AND Qu_3_d BETWEEN 1 AND 7
AND Qu_4_a BETWEEN 1 AND 7
AND Qu_4_b BETWEEN 1 AND 7
AND Qu_4_c BETWEEN 1 AND 7
AND Qu_4_d BETWEEN 1 AND 7
AND Qu_5 NOT IS MISSING
AND Qu_6 NOT IS MISSING
AND Qu_7 NOT IS MISSING
AND Qu_8 NOT IS MISSING
AND Qu_10 NOT IS MISSING
AND Qu_11 NOT IS MISSING
AND Qu_12 NOT IS MISSING
AND Qu_7 IN
('Female','Male')
AND Qu_10 NOT IN
('1','2','3','4','5')
AND Qu_11 NOT IN
('1','2','3','4','5')
AND Qu_12 NOT IN
('1','2','3','4','5') ;
QUIT;
/*The following is quantifying process to combine variables or define dummy
variables. Note: I found out there is a spacebar at the end of
'College/University Degree'. I'm not sure can SAS detect the spacebars so I
decided to add a spacebar for every education level just for safety.*/
PROC SQL;
CREATE TABLE Data.mhl1g18_quantification AS
SELECT
(Qu_1_a + Qu_1_b + Qu_1_c + Qu_1_d) AS Ethical_standard,
(Qu_2_a + Qu_2_b + Qu_2_c + Qu_2_d) AS Past_activities,
(Qu_3_a + Qu_3_b + Qu_3_c + Qu_3_d) AS Future_intentions,
(Qu_4_a + Qu_4_b + Qu_4_c + Qu_4_d) AS Confidence,
/*Q10=edu_level*/
(CASE
WHEN 'College Degree' = Qu_10 THEN 3
WHEN 'College/University Degree' = Qu_10 THEN 3
WHEN 'College/University Degree ' = Qu_10 THEN 3
WHEN 'College/University Degree&am' = Qu_10 THEN 3
WHEN 'College/University Degree&nb' = Qu_10 THEN 3
WHEN 'Doctoral Degree' = Qu_10 THEN 5
WHEN 'Doctoral Degree ' = Qu_10 THEN 5
WHEN 'Doctoral Degree &am' = Qu_10 THEN 5
WHEN 'Doctoral Degree &nb' = Qu_10 THEN 5
WHEN 'High School' = Qu_10 THEN 1
WHEN 'High School/Secondary School' = Qu_10 THEN 1
WHEN 'High School/Secondary School ' = Qu_10 THEN 1
WHEN 'High School/Secondary School&' = Qu_10 THEN 1
WHEN 'Master' = Qu_10 THEN 4
WHEN 'Master Degree' = Qu_10 THEN 4
WHEN 'Master's Degree' = Qu_10 THEN 4
WHEN 'Master’s Degree' = Qu_10 THEN 4
WHEN 'Master’s Degree' = Qu_10 THEN 4
WHEN 'Master’s Degree' = Qu_10 THEN 4
WHEN 'Master¡¯s Degree' = Qu_10 THEN 4
WHEN 'Master’s Degree' = Qu_10 THEN 4
WHEN 'Master’s Degree ' = Qu_10 THEN 4
WHEN 'Masters Degree' = Qu_10 THEN 4
WHEN 'Master''s Degree' = Qu_10 THEN 4
WHEN 'Master''sdegree' = Qu_10 THEN 4
WHEN 'Some College' = Qu_10 THEN 2
WHEN 'Some College ' = Qu_10 THEN 2
WHEN 'Some College &a' = Qu_10 THEN 2
WHEN 'Some College  ' = Qu_10 THEN 2
WHEN 'University' = Qu_10 THEN 3
WHEN 'University Degree' = Qu_10 THEN 3
END) FORMAT=BEST1. AS Education,
/*Q7 = gender*/
(CASE
WHEN 'Female' = Qu_7 THEN 0
WHEN 'Male' = Qu_7 THEN 1
END) FORMAT=BEST1. AS Gender,
/*Q11 = indiv_income*/
(CASE
WHEN 'High' = Qu_11 THEN 4
WHEN 'Low' = Qu_11 THEN 2
WHEN 'Medium' = Qu_11 THEN 3
WHEN 'Meduim' = Qu_11 THEN 3
WHEN 'Ver Low' = Qu_11 THEN 1
WHEN 'Very High' = Qu_11 THEN 5
WHEN 'Very Low' = Qu_11 THEN 1
WHEN 'Very Low ' = Qu_11 THEN 1
END) FORMAT=BEST1. AS Individual_income,
/*Q12 = Household_income */
(CASE
WHEN 'High' = Qu_12 THEN 4
WHEN 'Low' = Qu_12 THEN 2
WHEN 'Medium' = Qu_12 THEN 3
WHEN 'Meduim' = Qu_12 THEN 3
WHEN 'Ver Low' = Qu_12 THEN 1
WHEN 'Very High' = Qu_12 THEN 5
WHEN 'Very Low' = Qu_12 THEN 1
WHEN 'Very Low ' = Qu_12 THEN 1
END) FORMAT=BEST1. AS Household_income,
Qu_5 AS Citizenship,
Qu_6 AS Country_born,
Qu_8 AS Age
FROM data.mhl1g18_cleansing;
QUIT;
PROC SQL;
CREATE TABLE Data.mhl1g18_dummy AS
SELECT Ethical_standard,
Past_activities,
Future_intentions,
Confidence,
Education,
Gender,
Individual_income,
Household_income,
Citizenship,
Country_born,
Age,
/*Making dummy variable*/
(CASE
WHEN Ethical_standard >= 1 AND Ethical_standard <= 14 THEN 1
WHEN Ethical_standard >= 15 AND Ethical_standard <= 28 THEN
0
END) AS Ethical_dummy,
(CASE
WHEN Past_activities >= 1 AND Past_activities <= 14 THEN 1
WHEN Past_activities >= 15 AND Past_activities <= 28 THEN 0
END) AS Past_dummy,
(CASE
WHEN Future_intentions >= 1 AND Future_intentions <= 14 THEN
1
WHEN Future_intentions >= 15 AND Future_intentions <= 28
THEN 0
END) AS Futrue_dummy,
(CASE
WHEN Confidence >= 1 AND Confidence <= 14 THEN 1
WHEN Confidence >= 15 AND Confidence <= 28 THEN 0
END) AS Confidence_dummy
FROM Data.mhl1g18_quantification;
QUIT;
/*Cleansing all missing data for safety.*/
PROC SQL;
CREATE TABLE data.final_data AS
SELECT Ethical_standard,
Past_activities,
Future_intentions,
Confidence,
Education,
Gender,
Individual_income,
Household_income,
Citizenship,
Country_born,
Age,
Ethical_dummy,
Past_dummy,
Futrue_dummy,
Confidence_dummy
FROM data.mhl1g18_dummy
WHERE Ethical_standard NOT IS MISSING
AND Past_activities NOT IS MISSING
AND Future_intentions NOT IS MISSING
AND Confidence NOT IS MISSING
AND Education NOT IS MISSING
AND Gender NOT IS MISSING
AND Individual_income NOT IS MISSING
AND Household_income NOT IS MISSING
AND Citizenship NOT IS MISSING
AND Country_born NOT IS MISSING
AND Age NOT IS MISSING
AND Ethical_dummy NOT IS MISSING
AND Past_dummy NOT IS MISSING
AND Futrue_dummy NOT IS MISSING
AND Confidence_dummy NOT IS MISSING;
RUN;
/*Generate pdf file*/
ods pdf file = "\\[Link]\users\mhl1g18\mydocuments\SAS
Assignment\MANG6231_assignment\[Link]";
/*Linear regression*/
PROC REG DATA = Data.Final_data;
MODEL Past_activities =
Individual_income Confidence Education Age Ethical_standard
Gender;
RUN;
/*Probit regression. I choose probit model since I am more familiar with it
although both logit and probit are pretty much the same.*/
PROC PROBIT DATA = Data.Final_data;
MODEL Past_dummy =
Individual_income Confidence Education Age Ethical_standard
Gender;
RUN;
/*Ploting graph to find any potential reason of the result*/
PROC GCHART DATA = Data.Final_data;
PIE Citizenship /
NOLEGEND
SLICE=OUTSIDE
PERCENT=ARROW
VALUE=NONE
NOHEADING;
RUN;
QUIT;
ods pdf close;