全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
3486 13
2012-02-22
data test1;
input x $  y;
datalines;
o 2
c 3
z 5
a 2
;
run;
data test2;
set test1;
retain m 0;
m=m+y;
retain k 'a';
k=k||x;
run;
proc print data=test2;
run;
请看我这段程序,我用retain保存数值m做m的累加可以做到。但是做文本连接就不可以了,难道retain只能做数值保留么?我想做一个列中所有观测的连接,该如何做呢?
QQ截图20120222125442.png

二维码

扫码加我 拉你入群

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

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

全部回复
2012-2-22 13:09:06
在retain statement前加上 length k $10. 并且k=compress(k||x),你会发现你的retain回来了……
二维码

扫码加我 拉你入群

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

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

2012-2-22 13:17:54
不懂不会,只能帮顶了。
二维码

扫码加我 拉你入群

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

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

2012-2-22 13:52:51
zhangzachary 发表于 2012-2-22 13:09
在retain statement前加上 length k $10. 并且k=compress(k||x),你会发现你的retain回来了……
多谢大师赐教果然可以了,为什么加上compress就ok了呢。还有个问题麻烦大师一下,我如何给宏传一个字段的形参呢,比如数据集test 里面有一个字段 name 我想把这个参数传入宏 %chage(n)里面,我是这样做的:
%let cs=test.name;
%chage(&cs);
结果不对,说找不到。我该怎么传呢?
二维码

扫码加我 拉你入群

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

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

2012-2-22 13:56:54
wencycooll 发表于 2012-2-22 13:52
多谢大师赐教果然可以了,为什么加上compress就ok了呢。还有个问题麻烦大师一下,我如何给宏传一个字段的 ...
其实是变量长度问题,compress只是辅助去空格。后面那个问题没看懂,这么定义宏变量后,&cs 是 test.name,不是test.name下的values,如果不是这个意思,请给example或者再详细地描述下问题~
二维码

扫码加我 拉你入群

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

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

2012-2-22 14:18:29
zhangzachary 发表于 2012-2-22 13:56
其实是变量长度问题,compress只是辅助去空格。后面那个问题没看懂,这么定义宏变量后,&cs 是 test.name ...
是这样子的,我写了一个宏用来判断字符串长度是大于5,那么我写一个宏 chage(cs),这个参数是test 数据集里面name变量的值。我想保存到另一个数据集test2中 这样子test2就会多一个判断列。
data test2;
set test;
%let cs=test.name;
%chage(&cs);
我想通过这样子,得到每一条记录name值长度是否符合要求。但是总是不行。我想要test.name的value
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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