楼主: chenys625
2368 5

PDV中output的问题 [推广有奖]

  • 0关注
  • 2粉丝

已卖:156份资源

硕士生

34%

还不是VIP/贵宾

-

威望
0
论坛币
53 个
通用积分
0
学术水平
32 点
热心指数
29 点
信用等级
26 点
经验
2400 点
帖子
176
精华
0
在线时间
123 小时
注册时间
2012-1-17
最后登录
2019-11-25

楼主
chenys625 发表于 2013-1-27 00:26:00 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
想在已有的数据集a中增加一个观测,用两中方法实现了(区别在于新加观测的语句放的位置不一样)。但是b1与b2中的n不一样,请高手来帮忙从pdb与output的规则上解释一下。
data a;
do a=1 to 5;
output;
end;
run;

/*方法一*/
data b1;
if a=5 then do;
b=1;
n=_n_;
output;
end;
set a;
output;
run;

/*方法二*/
data b2;
set a;
n=_n_;
output;
if a=5 then do;
b=1;
n=_n_;
output;
end;
run;
二维码

扫码加我 拉你入群

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

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

关键词:output outpu Out PDV put set

沙发
pobel 在职认证  发表于 2013-1-27 09:11:28
1. 变量顺序
SAS编译data步时,变量在新数据集中的顺序决定于其在代码中出现的顺序。
b1: 变量出现顺序为:a,b,n,a(set a那句), 因此b1中变量顺序就是a,b,n.
b2: 变量出现顺序为:a(set a),n,a,b,n,因此b2中变量顺序是a,n,b.

2. n的值
b1: if a=5的那句是在data步执行的第6圈才是真的。这涉及到变量a的自动retain。
   loop 1:a,b,n初始化为空值;  if判断为假;  set a 读入第一行a的值1; output;
   loop 2:a 为1;  if判断为假;  set a 读入第二行a的值2;   output;
      ... ...
     loop 5:   a为4;   if判断为假;  set a读入第五行a的值5; output;
   loop 6: a为5; if判断为真,赋值b和n,output;  set a 试图读取数据集a的第六行,a没有第六行,data step结束。

b2: loop1: a,n,b初始化为空值;  set a 读入第一行a=1;  赋值n; output;if判断为假;
   loop 2-4: 分别读入数据集a的下一行; 赋值n; output; if判断为假;
   loop 5: 读入a=5; 赋值n=5; output;  if判断为真,赋值b和n; output;
   loop 6: 试图读取数据集a的第六行未果,data step 结束。
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
Imasasor + 40 + 100 + 2 + 1 + 2 观点有启发
chenys625 + 1 + 1 + 1 分析的有道理

总评分: 经验 + 40  论坛币 + 100  学术水平 + 3  热心指数 + 2  信用等级 + 3   查看全部评分

和谐拯救危机

藤椅
henryyhl 发表于 2013-1-27 12:17:18
过来学习了。
It's not going to be easy, but it is going to be worth it.

板凳
chenys625 发表于 2013-1-27 12:44:43
pobel 发表于 2013-1-27 09:11
1. 变量顺序
SAS编译data步时,变量在新数据集中的顺序决定于其在代码中出现的顺序。
b1: 变量出现顺序为 ...
非常感谢你的解答! 还有问题是,if判断的时候,a的值是保留上一个loop中的值? 这就是说在PDV中,自动保存了a的值到下一个loop?

报纸
pobel 在职认证  发表于 2013-1-27 13:21:19
chenys625 发表于 2013-1-27 12:44
非常感谢你的解答! 还有问题是,if判断的时候,a的值是保留上一个loop中的值? 这就是说在PDV中,自动保 ...
是。数据集中读入的变量是自动retain的。
和谐拯救危机

地板
chenys625 发表于 2013-1-27 13:25:54
pobel 发表于 2013-1-27 13:21
是。数据集中读入的变量是自动retain的。
Thank you very much! 我本来以为pdv是每个loop进来前,都要清空呢。

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

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