0% found this document useful (0 votes)
14 views6 pages

SAS Data Cleansing and Analysis

This document describes the process of cleaning and preparing survey data for analysis in SAS. It involves importing data from a CSV file, dropping unnecessary variables, cleaning data by removing missing or invalid values, quantifying variables by combining or defining dummy variables, and creating a final cleaned dataset with all missing data removed. The goal is to end with a dataset of survey responses that has been cleaned and prepared for further analysis.

Uploaded by

Man Ho Li
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd
0% found this document useful (0 votes)
14 views6 pages

SAS Data Cleansing and Analysis

This document describes the process of cleaning and preparing survey data for analysis in SAS. It involves importing data from a CSV file, dropping unnecessary variables, cleaning data by removing missing or invalid values, quantifying variables by combining or defining dummy variables, and creating a final cleaned dataset with all missing data removed. The goal is to end with a dataset of survey responses that has been cleaned and prepared for further analysis.

Uploaded by

Man Ho Li
Copyright
© All Rights Reserved
We take content rights seriously. If you suspect this is your content, claim it here.
Available Formats
Download as DOCX, PDF, TXT or read online on Scribd

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&amp' = 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;

You might also like