楼主: yellowriver
33993 23

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

11
arielleira 发表于 2014-1-1 17:18:03 |只看作者 |坛友微信交流群
赞二楼!

使用道具

12
cicime 发表于 2014-9-29 11:18:18 |只看作者 |坛友微信交流群
二楼说的非常清楚了,感谢

使用道具

13
zl030739 发表于 2015-1-1 11:47:34 |只看作者 |坛友微信交流群
谢谢二楼的讲解

使用道具

14
crackman 发表于 2015-1-1 21:20:00 来自手机 |只看作者 |坛友微信交流群
crackman.net里面很细介绍

使用道具

15
princemoon 发表于 2015-1-1 22:18:33 |只看作者 |坛友微信交流群
讲的深入浅出

使用道具

16
mathczh 发表于 2015-6-21 18:43:56 |只看作者 |坛友微信交流群
pobel 发表于 2010-11-5 07:58
Q1:
data a;
      set b;
您好!我想问个关于_n_和set的问题;
首先我看到的_n_是指data step运行多少次,那么data里面读数据的话,有多少行数据_n_就是多少么?所以有时候会出现_n_就是obs的序数,是这样理解么?
然后就是关于
if _n_=1 then set b;(其中b是只有1行的数据);
set a;(a是很多行的数据)
run;
这样为什么结果会在a的每一行加上b呢?这个语句的逻辑不是很理解,希望能给点机制上的解释。谢谢!

使用道具

17
pobel 在职认证  发表于 2015-6-23 07:21:32 |只看作者 |坛友微信交流群
mathczh 发表于 2015-6-21 18:43
您好!我想问个关于_n_和set的问题;
首先我看到的_n_是指data step运行多少次,那么data里面读数据的话 ...
1. _n_和数据集的行数不一定相等。
data step运行读数据集的时候,运行到run后会自动回到data语句。而每次回到data语句,_n_就会加1.与obs的序数无关。例如
data test;
      put _n_=;
     do i=1 to nobs;
           set sashelp.class nobs=nobs;
           output;
     end;
run;
这个例子,程序的运行只经过data语句两次,所以_n_最大取值为2,与数据集的行数没有关系。

2. 这个只是因为从数据集中读进来的变量是默认retain下来的。

使用道具

18
mathczh 发表于 2015-6-23 18:28:17 |只看作者 |坛友微信交流群
pobel 发表于 2015-6-23 07:21
1. _n_和数据集的行数不一定相等。
data step运行读数据集的时候,运行到run后会自动回到data语句。而每 ...
了解了,非常感谢!

使用道具

19
dnmt010 发表于 2015-6-23 21:25:27 |只看作者 |坛友微信交流群
受教了,俺准备入门

使用道具

20
mercuro 学生认证  发表于 2015-9-14 19:43:52 |只看作者 |坛友微信交流群
受教了  谢谢

使用道具

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

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

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

GMT+8, 2024-4-20 19:58