楼主: ylblueice
1470 5

求助高手-SAS数据合并问题 [推广有奖]

  • 0关注
  • 0粉丝

小学生

28%

还不是VIP/贵宾

-

威望
0
论坛币
8 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
23 点
帖子
2
精华
0
在线时间
9 小时
注册时间
2011-2-15
最后登录
2013-2-18

楼主
ylblueice 发表于 2012-11-1 15:03:57 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
我想将关系数据合并为事物数据,具体如下:原数据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]

二维码

扫码加我 拉你入群

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

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

关键词:求助高手 数据合并 Application documents Settings 程序

沙发
瀚海星云 发表于 2012-11-2 14:31:02
确实有难度
还是请高手出马吧

藤椅
moyunzheng 发表于 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.;

板凳
bobguy 发表于 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;

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

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

地板
ylblueice 发表于 2012-11-9 10:22:50
谢谢,我先尝试一下

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 09:56