楼主: yellowriver
35012 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
拉您进交流群
GMT+8, 2025-12-29 14:42