楼主: appleqiuqiu
11076 19

[问答] SAS里如何按id合并同列字符串 [推广有奖]

11
boe 发表于 2013-5-28 16:09:12
appleqiuqiu 发表于 2013-5-28 15:45
能再请问一下,如果我希望合并的形式是这样的:

1  “2013考研时间;2013考研时间;北京大学MBA;智联 ...
  1. data t1(drop=txt);
  2. infile datalines truncover;
  3. input id txt $100.;
  4. tt=trim(txt);
  5. datalines;
  6. 1 2013考研时间
  7. 1 2013考研时间
  8. 1 北京大学MBA
  9. 1 智联招聘
  10. 1 复旦 投毒
  11. 2 上交安泰
  12. 2 商学院排名
  13. 2 大学课程
  14. ;
  15. run;

  16. proc transpose data=t1 out=t2(drop=_NAME_);
  17. by id;
  18. var tt;
  19. run;

  20. data t3;
  21. set t2;
  22. length txt $500.;
  23. txt=quote(catx(";",of col:));
  24. drop col:;
  25. run;
复制代码
仅供参考。
Gorgeous girl , I love !

12
appleqiuqiu 发表于 2013-5-28 16:12:49
scarfacetony 发表于 2013-5-28 16:07
打引号的应该会有更好的方法,我这种比较山寨了,
刚注意到“复旦 投毒”间有个空格,如果这个空格要保留的 ...
这个运行出来好像没有用分号隔开?

13
scarfacetony 发表于 2013-5-28 16:18:51
appleqiuqiu 发表于 2013-5-28 16:12
这个运行出来好像没有用分号隔开?
  1. data test;
  2.         input id text $20.;
  3.         cards;
  4. 1           2013考研时间
  5. 1           2013考研时间
  6. 1           北京大学MBA
  7. 1           智联招聘
  8. 1           复旦  投毒
  9. 2           上交安泰
  10. 2           商学院排名
  11. 2           大学课程
  12. ;
  13. run;

  14. data rst(drop=text);
  15.         set test;
  16.         by id;
  17.         length rst $200.;
  18.         retain rst;
  19.         if first.id then rst=trim(text);
  20.                 else rst=catx(';',trim(rst),trim(text));
  21.         if last.id;
  22.                 rst=quote(trim(rst));
  23. run;
复制代码
那一楼刚更新了,你重新试下。
学了BOE的QUOTE函数后,可以这样处理,代码简化一点。
看了这个视频,我于是有了进股市的信心!
https://bbs.pinggu.org/thread-2787427-1-1.html

14
appleqiuqiu 发表于 2013-5-28 16:25:05
scarfacetony 发表于 2013-5-28 16:18
那一楼刚更新了,你重新试下。
学了BOE的QUOTE函数后,可以这样处理,代码简化一点。
果然是牛逼之人!!!!谢谢你和BOE,解决了我今天的大问题,这个运行完全没问题!!!

15
appleqiuqiu 发表于 2013-5-28 16:26:07
boe 发表于 2013-5-28 16:09
仅供参考。
太感谢你了,还有另一个人,都这么热心的解决我的问题,你们两个的方法各有特色,让我学习了!

16
moyunzheng 发表于 2013-5-29 10:27:59
scarfacetony 发表于 2013-5-28 16:07
打引号的应该会有更好的方法,我这种比较山寨了,
刚注意到“复旦 投毒”间有个空格,如果这个空格要保留的 ...
从逻辑上,还应该考虑first.id=1 && last.id=1 也即id只有一个观测的情况
已有 1 人评分学术水平 热心指数 信用等级 收起 理由
scarfacetony + 1 + 1 + 1 多谢指点,这样的话,我的代码13楼才是正确.

总评分: 学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

17
mclrenjing 在职认证  发表于 2013-6-16 09:17:15
问题很高深
金融投资那点事一看就明白 网址 **** 微信公众号 shanmenliu

18
Allenli2012 发表于 2015-2-27 10:59:49
很好用 顶

19
鸣秋浦曰 发表于 2017-9-19 13:20:21
学习了

20
l6397 发表于 2017-10-3 15:23:38
学习了

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

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