请选择 进入手机版 | 继续访问电脑版
楼主: yellowriver
33965 23

弱问:set 和retain语句怎么用? [推广有奖]

  • 0关注
  • 4粉丝

VIP

博士生

38%

还不是VIP/贵宾

-

威望
0
论坛币
10028 个
通用积分
22.7632
学术水平
21 点
热心指数
26 点
信用等级
19 点
经验
3133 点
帖子
164
精华
0
在线时间
170 小时
注册时间
2007-11-4
最后登录
2019-5-18

yellowriver 发表于 2010-11-5 04:04:39 |显示全部楼层 |坛友微信交流群

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
Q1:经常看到data A文件;
set B文件;

这表明创建一个A文件,然后复制B文件中的数据对不?

Q2: 下面一组代码,为什么刚开始要retain y1? retain是用作什么的?
data smart;

retain y1;
if _n_=1 then y=1;else y=2*y1;y1=y;if _n_ =100 then stop;run;谢谢啦~
二维码

扫码加我 拉你入群

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

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

关键词:RETAIN RET ETA Set smart 语句 Set RETAIN

回帖推荐

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

Q1: data a; set b; run; Set的作用是将数据集b中的记录逐条读入PDV中,在run语句的地方SAS会将pdv中的变量输出到数据集a中。 SAS帮助: What SET DoesEach time the SET statement is executed, SAS reads one observation into the program data vector. SET reads all variables and all observations from the input data sets unless you tell SAS to do otherwise. A SET statement can contain multipl ...

本帖被以下文库推荐

pobel 在职认证  发表于 2010-11-5 07:58:23 |显示全部楼层 |坛友微信交流群
Q1:
data a;
      set b;
run;     

Set的作用是将数据集b中的记录逐条读入PDV中,在run语句的地方SAS会将pdv中的变量输出到数据集a中。
SAS帮助:
What SET DoesEach time the SET statement is executed, SAS reads one observation into the program data vector. SET reads all variables and all observations from the input data sets unless you tell SAS to do otherwise. A SET statement can contain multiple data sets; a DATA step can contain multiple SET statements.


Q2:
RETAIN的作用:The RETAIN statement prevents SAS from re-initializing the values of new variables at the top of the DATA step.
Previous values of retained variables are available for processing across iterations of the DATA step.

对于数据集中新声明的变量,SAS会在data步循环执行开始时将其置为空值,而如果该变量是retain的变量,则不被置空。

还是看个例子:

数据集aaa,有三条记录。
data aaa;
     do x=1,3,5;
     output;
end;
run;

数据集bbb新声明变量y,在读入aaa的第一条记录时将y值设为1. 这样在第二条和第三条记录中y的值为空。

data bbb;
    set aaa;
    if _n_=1 then y=1;
    put _all_;
run;

log:
-----------------------------------------------
x=1 y=1 _ERROR_=0 _N_=1
x=3 y=. _ERROR_=0 _N_=2
x=5 y=. _ERROR_=0 _N_=3
-----------------------------------------------


data步ccc将y声明为retain的变量,在读第一条记录时令y=1,此值会被保留到第二条和第三条记录中。

data ccc;
     set aaa;
     retain y;
  if _n_=1 then y=1;
  put _all_;
run;

log
------------------------------------------
x=1 y=1 _ERROR_=0 _N_=1
x=3 y=1 _ERROR_=0 _N_=2
x=5 y=1 _ERROR_=0 _N_=3
-----------------------------------------


表达比较乱,希望对你有点用处。
已有 1 人评分经验 收起 理由
李会超 + 100 精彩帖子

总评分: 经验 + 100   查看全部评分

和谐拯救危机

使用道具

myzhang1982 在职认证  发表于 2010-11-5 09:08:13 |显示全部楼层 |坛友微信交流群
赞同2楼的说法

使用道具

hongxx 发表于 2010-11-6 01:27:22 |显示全部楼层 |坛友微信交流群
呵呵。如果用mathematica,符号运算,一条命令就搞定了。

使用道具

liyichen17 在职认证  发表于 2012-11-29 14:59:26 |显示全部楼层 |坛友微信交流群
谢谢2楼,明白了

使用道具

gaotao0727 发表于 2012-11-29 16:01:09 |显示全部楼层 |坛友微信交流群
学习了~受益了~
衣带渐宽终不悔,为伊消得人憔悴~~

使用道具

yuwenhuajiayou 学生认证  发表于 2013-1-22 11:30:46 |显示全部楼层 |坛友微信交流群
学习了!

使用道具

bladeautumn 发表于 2013-5-12 21:20:13 |显示全部楼层 |坛友微信交流群
很浅显易懂的讲解,不错

使用道具

lqwoailuo 发表于 2013-11-15 10:50:40 |显示全部楼层 |坛友微信交流群

使用道具

flyingphx 发表于 2013-11-28 05:46:18 |显示全部楼层 |坛友微信交流群
pobel 发表于 2010-11-5 07:58
Q1:
data a;
      set b;
2楼说得清楚,受教了

使用道具

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

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

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

GMT+8, 2024-4-18 18:34