楼主: yellowriver
35013 23

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

  • 0关注
  • 4粉丝

VIP

已卖:5081份资源

博士生

38%

还不是VIP/贵宾

-

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

楼主
yellowriver 发表于 2010-11-5 04:04:39 |AI写论文

+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
学习了~受益了~
衣带渐宽终不悔,为伊消得人憔悴~~

7
yuwenhuajiayou 学生认证  发表于 2013-1-22 11:30:46
学习了!

8
bladeautumn 发表于 2013-5-12 21:20:13
很浅显易懂的讲解,不错

9
lqwoailuo 发表于 2013-11-15 10:50:40

10
flyingphx 发表于 2013-11-28 05:46:18
pobel 发表于 2010-11-5 07:58
Q1:
data a;
      set b;
2楼说得清楚,受教了

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

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