楼主: PYJXDX
1291 6

SAS 合并记录 [推广有奖]

  • 4关注
  • 0粉丝

高中生

42%

还不是VIP/贵宾

-

威望
0
论坛币
0 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
524 点
帖子
13
精华
0
在线时间
34 小时
注册时间
2012-2-14
最后登录
2019-9-5

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
现有 SAS 数据 如下:
如何 显示成
class    name2
A         BEN,CARL
B         LILY,LUCY
C         JACK,JOE
.......


data tt;
input class $ name $;
cards;
A CARL
A BEN
B LILY
C JACK
D VIVI
B LUCY
C JOE
D AMY
;
RUN;
PROC SORT data= tt;BY CLASS NAME;RUN;

DATA tt0;                                                                                                                                    
SET tt;
format NAME1 $100.;
BY CLASS NAME;
IF first.CLASS THEN DO  NAME1=NAME;RETAIN NAME1;OUTPUT;END;
ELSE DO;RETAIN NAME1;NAME1=NAME1||","||NAME;OUTPUT;END;
RUN;
我用RETIAN 函数不行。望各位 大侠告知 。


二维码

扫码加我 拉你入群

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

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

关键词:RETAIN output format outpu Input 记录

沙发
wwang111 发表于 2014-8-26 16:37:20 |只看作者 |坛友微信交流群
  1. data tt0;
  2. set tt;
  3. by class name;
  4. length name2 $100;
  5. retain name2;
  6. if first.class then name2=name;
  7. else name2=catx(', ',name2,name);
  8. if last.class;
  9. drop name;
  10. run;
复制代码

使用道具

藤椅
PYJXDX 发表于 2014-8-26 17:49:37 |只看作者 |坛友微信交流群
wwang111 发表于 2014-8-26 16:37
It works.
Thank you so much~~

使用道具

板凳
just31415 发表于 2014-8-27 00:04:15 |只看作者 |坛友微信交流群
供发散思路~~

proc Transpose data=tt out=t_tt(drop=_name_) prefix=C_;
        by class;
        VAR NAME;
run;

data t_tt0(DROP=C_:);
        set t_tt;
        name1=catx(',',OF C_:);
RUN;

使用道具

报纸
huangpengfei 发表于 2014-9-9 00:13:44 |只看作者 |坛友微信交流群
just31415 发表于 2014-8-27 00:04
供发散思路~~

proc Transpose data=tt out=t_tt(drop=_name_) prefix=C_;
简单易懂

使用道具

地板
gaotao0727 发表于 2014-9-9 09:27:14 |只看作者 |坛友微信交流群
用hash表实现一下,呵呵
  1. proc sort data=tt;by class name;run;
  2. data _null_;
  3.   length name_list $ 30;
  4.   if _n_=1 then do;
  5.     declare hash h();
  6.         h.definekey('class');
  7.         h.definedata('class','name_list');
  8.         h.definedone();
  9.   end;
  10.   set tt end=done;
  11.   if h.find() ^=0 then do;
  12.     name_list=name;
  13.         h.add();
  14.   end;
  15.   else do;
  16.     name_list=trim(name_list)||','||name;
  17.         h.replace();
  18.   end;
  19.   if done then
  20.     h.output(dataset:'result');
  21. run;
复制代码

使用道具

7
wh7064rg 发表于 2014-9-10 09:21:27 |只看作者 |坛友微信交流群
gaotao0727 发表于 2014-9-9 09:27
用hash表实现一下,呵呵
学习了

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-27 02:40