全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1441 5
2012-11-01
我想将关系数据合并为事物数据,具体如下:原数据AA:
ID ,NAME,SEX
1     小王    女
2     小李   男
希望合并后的数据cc:
ID  attr
1  ( name_小王,sex_女,....)
2   (name_小李,sex_男,.....)
现在找了一个程序,但是不知道出错在什么地方,请大家指教。感觉出错在红色背景部分,求指教

data cc;

  input id 8. attr $5.;

  cards;

  ;

  run;

  %macro trans;

    %do i=1 %to 2;

    data x&i; set aa;

     keepid x&i;

      datax&i; set x&i;

        ifx&i=0 then attr="x&i"||"_"||'0';

        %do j=1 %to8;

         if x&i=&j then attr="x&i"||"_"||"&j";

        %end;

     proc append base=cc data=x&i force;

    %end;

   %mend;

   %trans;


[img]file:///C:\Documents and Settings\Administrator\Application Data\Tencent\Users\36172771\QQ\WinTemp\RichOle\M0Z[SUL(_5)4%96}BZ1_IUL.jpg[/img]

二维码

扫码加我 拉你入群

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

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

全部回复
2012-11-2 14:31:02
确实有难度
还是请高手出马吧
二维码

扫码加我 拉你入群

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

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

2012-11-2 17:22:43
data aa;
input ID NAME $ SEX $;
cards;
1     小王   女
2     小李   男
;
run;
%macro temp;
%let rc=%sysfunc(open(aa));
data cc(keep=id attr);
length id 8 attr $32766.;
set aa;
attr="("||%do i=2 %to %sysfunc(attrn(&rc.,NVARS));"%sysfunc(VARNAME(&rc.,&i.))"||"_"||strip(%sysfunc(VARNAME(&rc.,&i.)))||","||%end;")";
attr=strip(substr(strip(attr),1,length(strip(attr))-2)||")");
run;
%let rc=%sysfunc(close(aa));
%mend;
%temp;


因为不知道attr的升度,所以使用格式$32766.;
二维码

扫码加我 拉你入群

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

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

2012-11-3 11:10:15
Why so complicated?

data tmp;
length ID 8 NAME SEX $10 attr $50;
input ID NAME SEX;
array cvar[*] NAME SEX;
do i=1 to dim(cvar);
   c=catt(vname(cvar[i]),'_',cvar[i]);
   attr=catx(' ', attr, c);
end;
drop i c;
cards;
1 LI M
2 WANG F
;

proc print;run;
二维码

扫码加我 拉你入群

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

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

2012-11-4 15:10:38
bobguy 发表于 2012-11-3 11:10
Why so complicated?

data tmp;
因为看到变量attr要求是(name_小王,sex_女,....),cards中只举了Name和Sex两个变量,考虑到还有更多的变量且包括字符型和数值型,所以没有考虑用array来做。
二维码

扫码加我 拉你入群

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

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

2012-11-9 10:22:50
谢谢,我先尝试一下
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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