楼主: wencycooll
2962 13

[问答] 关于retain保存文本信息问题,求教 [推广有奖]

  • 1关注
  • 0粉丝

等待验证会员

大专生

13%

还不是VIP/贵宾

-

威望
0
论坛币
43 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
251 点
帖子
28
精华
0
在线时间
53 小时
注册时间
2011-11-30
最后登录
2014-4-19

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
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

二维码

扫码加我 拉你入群

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

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

关键词:RETAIN ETA RET Input print 信息

回帖推荐

zhangzachary 发表于2楼  查看完整内容

在retain statement前加上 length k $10. 并且k=compress(k||x),你会发现你的retain回来了……

本帖被以下文库推荐

沙发
zhangzachary 发表于 2012-2-22 13:09:06 |只看作者 |坛友微信交流群
在retain statement前加上 length k $10. 并且k=compress(k||x),你会发现你的retain回来了……
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

藤椅
aibieli731001 发表于 2012-2-22 13:17:54 |只看作者 |坛友微信交流群
不懂不会,只能帮顶了。

使用道具

板凳
wencycooll 发表于 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);
结果不对,说找不到。我该怎么传呢?

使用道具

报纸
zhangzachary 发表于 2012-2-22 13:56:54 |只看作者 |坛友微信交流群
wencycooll 发表于 2012-2-22 13:52
多谢大师赐教果然可以了,为什么加上compress就ok了呢。还有个问题麻烦大师一下,我如何给宏传一个字段的 ...
其实是变量长度问题,compress只是辅助去空格。后面那个问题没看懂,这么定义宏变量后,&cs 是 test.name,不是test.name下的values,如果不是这个意思,请给example或者再详细地描述下问题~
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

地板
wencycooll 发表于 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

使用道具

7
zhangzachary 发表于 2012-2-22 14:51:27 |只看作者 |坛友微信交流群
wencycooll 发表于 2012-2-22 14:18
是这样子的,我写了一个宏用来判断字符串长度是大于5,那么我写一个宏 chage(cs),这个参数是test 数据集里 ...
把%let 变成call symput("cs",name) ;
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

8
wencycooll 发表于 2012-2-22 15:43:29 |只看作者 |坛友微信交流群
zhangzachary 发表于 2012-2-22 14:51
把%let 变成call symput("cs",name) ;
太感谢了,回头我试一下。

使用道具

9
wencycooll 发表于 2012-2-22 17:12:00 |只看作者 |坛友微信交流群
zhangzachary 发表于 2012-2-22 14:51
把%let 变成call symput("cs",name) ;
我还想请教一个问题,在宏里面不能用length函数么

使用道具

10
zhangzachary 发表于 2012-2-22 17:17:25 |只看作者 |坛友微信交流群
wencycooll 发表于 2012-2-22 17:12
我还想请教一个问题,在宏里面不能用length函数么
%sysfunc(length())
寒冰凤凰 My blog: http://blog.sina.com.cn/u/1058955485

使用道具

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

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

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

GMT+8, 2024-5-1 14:26