楼主: playmore
3441 8

[程序分享] SAS基础宏之2:SeparateString [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2013-4-13 17:58:55 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
这个宏用于得到由多个单词构成的(用空格分隔单词)宏变量的单词数目,并且把这些单词分别赋给一系列的宏变量
我写的宏中间的参数一般可设置多个数据集/变量,所以需要这个SeparateString把它拆分出来

  1. %macro SeparateString(InputString,OutputString);
  2. /**********************************************************************/
  3. /* 此宏用于将含有一组单词的字符串拆分为一个个的单词,并将这些单词依次 */
  4. /* 存放于一系列宏变量之中。注意,字符串中单词的定义为由字母、数字和下 */
  5. /* 下划线组成的一个整体,而分隔符可以为除字母、数字、下划线以及逗号之 */
  6. /* 外的其他任意字符。其中InputString是所选的字符串,OutputString是输 */
  7. /* 出的字符串前缀,不需要加最后的下划线。 */
  8. /* */
  9. /* 最终得到的是一组单词的宏变量&OutputString._Var1,&OutputString.Var2 */
  10. /* 等以及字符串所含单词数量的宏变量&OutputString._Num。 */
  11. /* */
  12. /* Created on 2012.9.18 */
  13. /* Modified on 2012.12.6 */
  14. /**********************************************************************/

  15. data SS_temp;
  16. Str="&InputString";
  17. run;

  18. data SS_temp;
  19. set SS_temp;
  20. Words=0;
  21. do while(SCAN(Str,Words+1,' ') NE "");
  22. Words+1;
  23. end;
  24. run;

  25. %global &OutputString._Num;

  26. proc sql noprint;
  27. select Words into :&OutputString._Num from SS_Temp;
  28. quit;

  29. %do SS_i=1 %to &&&OutputString._Num;
  30. %global &OutputString._Var&SS_i;
  31. %let &OutputString._Var&SS_i.=%SYSFUNC(SCAN(&InputString,&SS_i,' '));
  32. %end;

  33. /* 去除&OutputString._Num前后的空格 */
  34. %let &OutputString._Num=%SYSFUNC(TRIM(&&&OutputString._Num));

  35. /* 删除不必要的表格 */
  36. proc delete data=SS_temp;
  37. run;

  38. %mend;


  39. %macro Demo();

  40. %let InputString=12 -24;
  41. %let OutputString=a;
  42. %SeparateString(&InputString,&OutputString);

  43. %put &a_Num;
  44. %put &a_Var2;

  45. %mend;
复制代码


二维码

扫码加我 拉你入群

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

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

关键词:separate string sas基础 Rates tring 基础

已有 1 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
webgu + 100 + 100 + 3 + 3 + 3 精彩帖子

总评分: 经验 + 100  论坛币 + 100  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

本帖被以下文库推荐

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
yyy256 发表于 2013-4-13 22:41:55
很强大

藤椅
webgu 发表于 2013-4-13 22:42:24
Playmore 大侠的程序写得好规范啊。大小写,后缀做得很细致。
IT出身?
SAS资源
1. SAS 微信:StatsThinking
2. SAS QQ群:348941365

板凳
playmore 发表于 2013-4-13 22:47:40
webgu 发表于 2013-4-13 22:42
Playmore 大侠的程序写得好规范啊。大小写,后缀做得很细致。
IT出身?
不是学IT的,纯理科出身
规范不规范纯粹个人习惯,呵呵
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
dxystata 发表于 2013-4-15 22:17:15
建议补充个实例。谢谢分享!

地板
ortsov 发表于 2013-6-13 18:46:18
实用!

7
liu5355776 发表于 2014-3-1 09:51:14
thanks

8
sigmote 发表于 2014-3-6 04:29:52
Thanks.

9
curlxp 发表于 2014-3-6 05:13:20
很有意思的代码,感谢楼主分享
初习文,屡试不中;后习武,校场发一矢,中鼓吏;终从医,有小成,攒一延寿良方,服之,卒

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

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