全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2693 6
2009-09-09
现在的数据表是这样的:
ID ADRESS CHECKER   DATE   SEX01  SEX02 SEX03 OCCUP1    OCCUP02    OCCUP03 OLD01 OLD02 OLD03
1  PKU        CRACKMAN  090909 F         M       M        STUDENT        STUDENT   STUDENT              23       22      24
2  PKU        CRACKMAN  090909 F         M       F        STUDENT        STUDENT   STUDENT               22      21      22
3  PKU        CRACKMAN  090909 M        F        M        STUDENT       STUDENT   STUDENT                19     19     23
4  PKU        CRACKMAN  090909 M        F       M        STUDENT         STUDENT   STUDENT              24       24    21

现在想变成如下这个表:

ID       ADRESS CHECKER   DATE      SEX      OCCUP    LOD
101     PKU  CRACKMAN      090909    F             STUDENT 23
102   PKU   CRACKMAN      090909     M                STUDENT 22
........
就是把第一个表的一条记录变成下面的三条记录
谢谢!!!!
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2009-9-9 17:38:22
应该符合你的要求了
data a;
input ID ADRESS $ CHECKER $  DATE:ddmmyy.  SEX01$  SEX02$ SEX03$  OCCUP01$  OCCUP02$  OCCUP03$  OLD01 OLD02 OLD03;
format date ddmmyy6.;
datalines;
1  PKU    CRACKMAN  090909  F       M      M     STUDENT    STUDENT   STUDENT  23    22    24
2  PKU    CRACKMAN  090909  F       M      F     STUDENT    STUDENT   STUDENT  22    21    22
3  PKU    CRACKMAN  090909  M       F      M     STUDENT    STUDENT   STUDENT  19    19    23
4  PKU    CRACKMAN  090909  M       F      M     STUDENT    STUDENT   STUDENT  24    24    21
;
run;

data b;
set work.a;
keep ID ADRESS  CHECKER   DATE  SEX ;
array ta {*} $ SEX01  SEX02 SEX03;
do ti = 1 to dim(ta);                                                                                                        
     SEX = ta{ti};
output;                                                                                                                           
end;
run;         
data c;
set work.a;
keep  OCCUP;
array tb {*} $ OCCUP01  OCCUP02  OCCUP03;
do ti = 1 to dim(tb);                                                                                                        
     OCCUP = tb{ti};
output;
end;
run;
data d;
set work.a;
keep  OLD;
array tc {*} OLD01 OLD02 OLD03;
do ti = 1 to dim(tc);                                                                                                        
     OLD = tc{ti};
output;
end;
run;

data abc;
merge b c d;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-9 20:51:27
1# crackman
复制代码
*note:address mistakenly spelled as adress;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-9 22:25:42
data a;
input
ID ADRESS$ CHECKER$   DATE:yymmdd10.   SEX01$  SEX02$ SEX03$ OCCUP01$    OCCUP02 $   OCCUP03$  OLD01 OLD02 OLD03@@;
format date yymmdd10.;
cards;
1  PKU        CRACKMAN  090909 F         M       M        STUDENT        STUDENT   STUDENT              23       22      24
2  PKU        CRACKMAN  090909 F         M       F        STUDENT        STUDENT   STUDENT               22      21      22
3  PKU        CRACKMAN  090909 M        F        M        STUDENT       STUDENT   STUDENT                19     19     23
4  PKU        CRACKMAN  090909 M        F       M        STUDENT         STUDENT   STUDENT              24       24    21
;run;
%let num=3;%macro x;%do i=1 %to #proc sql;create table a&i as select id*100+&i as id,adress,
checker,date,sex0&i as sex,occup0&i as occup,old0&i as old from a ;quit;%end;%mend;%x;
%macro y;data final; set %do i=1 %to #a&i %end; ;run;proc sort;by id;run;%mend;%y;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2009-9-9 22:33:09
馊主意
output 3次再set
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2012-4-18 17:50:04
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群