/* IML-stuff-plus-30nov10.sas 1) read dataset into IML, manipulate and construct new SAS data set 2) illustrate IML Studio 3.2 */ filename FROMWEB url "http://www.users.muohio.edu/baileraj/classes/sta402/Data/SMSA-DASL-2space-sep.txt"; options nodate nocenter; data SMSA_from_txt; infile FROMWEB firstobs=2; * infile "C:\Users\baileraj\Desktop\SMSA-DASL-2space-sep.txt" firstobs=2; length city $ 39; * if you download data file to your desktop; input city & JanTemp JulyTemp RelHum Rain Mortality Education PopDensity pct_NonWhite pct_WC pop pop_per_house income HCPot NOxPot S02Pot NOx; run; proc print data=SMSA_from_txt; var city JanTemp JulyTemp RelHum NOxPot S02Pot NOx; run; proc means data=SMSA_from_txt min q1 median mean q3 max; var Mortality; run; proc iml; /* read SAS data in IML */ use SMSA_from_txt; read all var {JanTemp JulyTemp Mortality} into SM1; read all var _num_ into SM1_all; read all var { Mortality } into SM_mortality; read all var { city } into SM_city; print SM1 SM1_all SM_mortality SM_city ; /* subtract the min from each mortality value */ /* Two step alternative */ mort_min = SM_mortality[><,]; print mort_min; mort_min_dev = SM_mortality - mort_min; print mort_min_dev; /* One step alternative */ mort_min_dev2 = SM_mortality[,1] - SM_mortality[><,]; print mort_min_dev2; /* Create SAS Data set with the new diff variable */ create dsn_mort_min from mort_min_dev2; append from mort_min_dev2; quit; /* contents of new data set */ proc print data=dsn_mort_min; run; /* add new column with mort_minus_min to SMSA data */ data new_SMSA; merge SMSA_from_txt dsn_mort_min; rename col1=mort_minus_min; run; proc print data=new_SMSA; run; /* ok, now launch SAS IML/Studio 3.2 .... * You run SAS/IML Studio on a client computer, while the computer running SAS is the SAS server.