#stata
cd “c:data”
reserve
keep id itm* amt*
outsheet using “c:datainc95t.txt”,comma
restore
reserve
drop itm* amt*
outsheet using “c:datainc95o.txt”,comma
restore
#sas
dm’log;clear;output;clear;’;
OPTIONS noncenter;
/* retain itm amt */
proc import datafile=”c:datainc95.txt” out=mydata dbms=dlm replace;
delimiter=”,”;
getnames=yes;
run;
/* retain characteristics of household */
proc import datafile=”c:datainc95o.txt” out=inc95 dbms=dlm replace;
delimiter=”,”;
getnames=yes;
run;
/* select some variable from inc951 */
data inc951;
set inc95;
keep id a1 a4 a5 a6 a7 a11;
run;
/* transpose wide to long itm */
proc transpose data=mydata out=longf prefix=itm ;
by id;
var itm1-itm218;
run;
/* transpose wide to long amt */
proc transpose data=mydata out=longs prefix=amt ;
by id;
var amt1-amt218;
run;
/* merge data */
data long2;
merge longf (rename=(itm1=itm) drop=_name_) longs (rename=(amt1=amt));
by id;
drop drop _name_;
run;
/* select amt from merged data */
data long;
set long2;
where(itm=400);
itm400=itm;
where(itm=401);
itm401=itm;
run;
/*
proc transpose data=long2 out=wides prefix=itm;
by id;
id itm;
var amt;
run;
data wides2;
set wides;
keep itm100-itm150;
run;
DATA auto2;
SET auto;
IF (rep78 <= 3) AND (rep78 ^= .);
run;
*/
/* merge inc95 and amt data */
proc sql;
create table iinc95 as
select *
from long ,inc951
where long.id=inc951.id
order by inc951.id;
quit;
proc print data=iinc95(obs=15);
run;
/* transpose wide to long */
http://www.ats.ucla.edu/stat/sas/modules/wtol_transpose.htm
/*transpose long to wide*/
http://www.ats.ucla.edu/stat/sas/modules/ltow_transpose.htm
/*merge data by sql */
http://www.ats.ucla.edu/stat/sas/modules/sqlmerge.htm
|