楼主: wpfwxn
2744 11

[问答] 为何BBBB数据集是空的呢? [推广有奖]

  • 0关注
  • 1粉丝

已卖:276份资源

讲师

24%

还不是VIP/贵宾

-

威望
0
论坛币
6159 个
通用积分
8.2130
学术水平
32 点
热心指数
34 点
信用等级
18 点
经验
1868 点
帖子
269
精华
0
在线时间
629 小时
注册时间
2014-4-9
最后登录
2025-6-12

楼主
wpfwxn 发表于 2016-2-4 05:20:37 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data aaaa;
set sashelp.class;
    if _N_ = 0;
stop;
run;
data bbbb;
  set aaaa;
  name = '奇怪';
  output;
run;

以上述为例,aaaa数据集为空,为啥不能直接增加观测呢?

欢迎大家发言,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:数据集 SASHELP output outpu Data

回帖推荐

yongyitian 发表于7楼  查看完整内容

1. _n_ 是自动变量, 数据步开始后自动生成并计数,不能验证不存在的_n_. 只能验证_n_的值不是missing; data _null_; if missing (_n_) then put " _n_ has a missing value"; else put " _n_ has a value"; run; 2. BBBB 为空 和 output 不起作用, 是 aaaa 的 end of file 在作怪。 因为 aaaa 没有数据, 所以 end=1. 数据步运行到end of file 时就会结束. 所以 set aaaa; 下面的output 语句不会被执行. 可以把 ...

沙发
co_fund 发表于 2016-2-4 11:27:18
我的推测是,output是在_n_后面加1然后输出,aaaa的_n_不是0,而是不存在,所以不能output;

data aaaa;
set sashelp.class;
    if _N_ = 0;
stop;
run;
proc sql noprint;
insert into aaaa set name="Andy";
quit;

藤椅
yongyitian 发表于 2016-2-4 20:41:10
1.
数据步运行到 run 语句的时候将 pdv 里的数据写入输出数据集.
if 语句为 true 时, 运行下面的语句, 否则反回 data 语句.
数据步的循环从 _n_ = 1 开始.
这段程序的 if _n_ = 0 语句为false, 所以不会运行 run 语句来输出数据.

2
数据步运行到 stop 语句会结束。 所以既使没有 if 语句 aaaa 也会为空。

data aaaa;
  put _n_=;
    set sashelp.class;
    if _n_ =1;
   put "A " _n_= ;
*    stop;
run;

板凳
wpfwxn 发表于 2016-2-5 03:38:54 来自手机
wpfwxn 发表于 2016-2-4 05:20
data aaaa;
set sashelp.class;
    if _N_ = 0;
如何验证_n_不存在?

报纸
wpfwxn 发表于 2016-2-5 03:41:34 来自手机
yongyitian 发表于 2016-2-4 20:41
1.
数据步运行到 run 语句的时候将 pdv 里的数据写入输出数据集.
if 语句为 true 时, 运行下面的语句, ...
aaaa数据集为空我是知道的,我想弄明白的是第二个data步中没有观测,是为什么?

地板
wpfwxn 发表于 2016-2-5 03:43:12 来自手机
yongyitian 发表于 2016-2-4 20:41
1.
数据步运行到 run 语句的时候将 pdv 里的数据写入输出数据集.
if 语句为 true 时, 运行下面的语句, ...
output没有用,赋值语句也没有用,为什么呢?

7
yongyitian 发表于 2016-2-5 09:42:30
wpfwxn 发表于 2016-2-5 03:43
output没有用,赋值语句也没有用,为什么呢?
1. _n_ 是自动变量, 数据步开始后自动生成并计数,不能验证不存在的_n_.
只能验证_n_的值不是missing;

data _null_;
  if missing (_n_) then put " _n_ has a missing value";
  else put " _n_ has a value";
run;


2. BBBB 为空 和 output 不起作用, 是 aaaa 的 end of file 在作怪。 因为 aaaa 没有数据, 所以 end=1. 数据步运行到end of file 时就会结束.  所以 set aaaa; 下面的output 语句不会被执行. 可以把 output 放在 set aaaa; 前面.
  1. data aaaa;
  2.     set sashelp.class;
  3.     if _n_ = 0;
  4. run;

  5. data bbbb;
  6. put "A----:  " _all_;
  7.    name = "BBBBB";
  8.    output;
  9.    set aaaa end=end_aaaa;
  10.    output;   /* this will not be executed */
  11.    put "B----: " _all_; /* this will not be executed */
  12. run;

  13. /* or you can do like this */
  14. data cccc;  
  15. if 0 then set aaaa;
  16.    name= "CCCCC";
  17.    age = 20;
  18. output;
  19. run;
复制代码
已有 2 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
wpfwxn + 5 + 1 + 1 + 1 精彩帖子
tonic_zlj + 1 + 1 + 1 精彩帖子

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

8
wpfwxn 发表于 2016-2-10 15:19:32 来自手机
yongyitian 发表于 2016-2-5 09:42
1. _n_ 是自动变量, 数据步开始后自动生成并计数,不能验证不存在的_n_.
只能验证_n_的值不是missing;
...
有些道理

9
wpfwxn 发表于 2016-2-14 09:12:25
yongyitian 发表于 2016-2-5 09:42
1. _n_ 是自动变量, 数据步开始后自动生成并计数,不能验证不存在的_n_.
只能验证_n_的值不是missing;
...
非常感谢您的回复,还有一个问题想请教。您的回答是基于自己的猜测,还是在书本或者论文中见到过类似的说法?

10
yongyitian 发表于 2016-2-16 06:33:24
wpfwxn 发表于 2016-2-14 09:12
非常感谢您的回复,还有一个问题想请教。您的回答是基于自己的猜测,还是在书本或者论文中见到过类似的说 ...
之前search过, 没有找到相同问题的解释。
楼上的解释是基于对数据步的理解。 似乎不是很准确.

下图是SAS文件里的内容

MP770.JPG

下面的例子中 cccc 只有一行数据.  Log output: B eof_cccc=1 这一行说明当set语句读到最后一行数据
集时也读到了 end of file (end=1), 但 data step 并没有停止,而是继续运行了下面的语句 (put "B  " _all_;)和run语句,
然后返回 data 语句.  直到再次遇到 set 语句, 但 cccc 已经没有数据可读, 所以 data step 停止运行.  

换句话说: set 语句遇到空数据时,data step 就会停止. 这样解释是否更准确些?

   data _null_;
     put "A  " _all_;
     set cccc end = eof_cccc;
     put "B  " _all_;
   run;

/* log output */
A  eof_cccc=0 Name=  Sex=  Age=. Height=. Weight=. _ERROR_=0 _N_=1
B  eof_cccc=1 Name=CCCCC Sex=  Age=20 Height=. Weight=. _ERROR_=0 _N_=1
A  eof_cccc=1 Name=CCCCC Sex=  Age=20 Height=. Weight=. _ERROR_=0 _N_=2


已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
wpfwxn + 5 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 5  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

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

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