楼主: eric_darcy
3441 12

[问答] 关于set的问题 [推广有奖]

  • 6关注
  • 2粉丝

博士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
6493 个
通用积分
3.9754
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
4024 点
帖子
158
精华
0
在线时间
343 小时
注册时间
2007-9-28
最后登录
2025-6-9

楼主
eric_darcy 发表于 2014-4-2 18:03:35 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
以下为昨天微信收到的sas程序,不是很理解为啥要做Y赋值“.”,求解释。谢谢!

data a;
input x y;
cards;
1 2
2 3
3 .
4 5
;
run;


data b;
input x z;
cards;
1 10
2 .
3 .
4 40 ;
run;



目标程序
data final;
y=.;
set a b(in=b);
if b and z=. then y=999;
proc print;
run;

二维码

扫码加我 拉你入群

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

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

关键词:Set cards Input print sas程序 程序

沙发
huyiustc 发表于 2014-4-2 18:22:25
数据整齐,符合SAS读数据的格式吧,个人理解。
我是御皇香案吏,谪居犹住在瀛洲

藤椅
intheangel 学生认证  发表于 2014-4-2 19:59:47
你不加.  ,y会从下一行开始取值,除非设定infile cards missover;
我是一只瘦瘦的小猪~~~
╭︿︿︿╮
{/-◎◎-/}
( (oo) )
  ︶︶︶

板凳
eric_darcy 发表于 2014-4-2 23:15:49
intheangel 发表于 2014-4-2 19:59
你不加.  ,y会从下一行开始取值,除非设定infile cards missover;
谢谢~试过了,不加那一句的话,B数组中连最后一个Z=40的都会赋值给Y999.不是很明白啊

报纸
eric_darcy 发表于 2014-4-2 23:17:16
intheangel 发表于 2014-4-2 19:59
你不加.  ,y会从下一行开始取值,除非设定infile cards missover;
谢谢~试过了,不加那一句的话,B数组中连最后一个Z=40的都会赋值给Y999.不是很明白啊

地板
eric_darcy 发表于 2014-4-2 23:18:06
huyiustc 发表于 2014-4-2 18:22
数据整齐,符合SAS读数据的格式吧,个人理解。
谢谢
好像不是呢

7
pobel 在职认证  发表于 2014-4-3 07:35:48
因为Y是set语句中数据集a的一个变量。

data步在执行过程中,来自数据集中的变量是自动retain的。
也就是对于这些变量,它的值会一直存在,直到被别的值覆盖。

如果是set 多个数据集,那在set语句读取某个数据集的第一条记录的时候,也会将前面数据集的变量设成missing。
如set a b;当读b的第一行记录的时候,会将a的变量值置空。但是如果在之后改变a数据集中的变量的值,那个值仍然会retain下来。
和谐拯救危机

8
eric_darcy 发表于 2014-4-10 15:35:02
pobel 发表于 2014-4-3 07:35
因为Y是set语句中数据集a的一个变量。

data步在执行过程中,来自数据集中的变量是自动retain的。
多谢解释,大概知道过程,但是对data set的逻辑还是有点不明白,为啥来自数据集的变量会自动retain呢?求教了。谢谢!

9
eric_darcy 发表于 2014-4-10 15:35:04
pobel 发表于 2014-4-3 07:35
因为Y是set语句中数据集a的一个变量。

data步在执行过程中,来自数据集中的变量是自动retain的。
多谢解释,大概知道过程,但是对data set的逻辑还是有点不明白,为啥来自数据集的变量会自动retain呢?求教了。谢谢!

10
pobel 在职认证  发表于 2014-4-10 15:48:46
eric_darcy 发表于 2014-4-10 15:35
多谢解释,大概知道过程,但是对data set的逻辑还是有点不明白,为啥来自数据集的变量会自动retain呢?求 ...
关于Data STEP,楼主可以参考帮助文档 Base SAS/SAS Language Concepts/DATA Step Concepts

至于为什么会自动retain,实在是不知道怎么回答,因为sas软件就是这样设计的。
和谐拯救危机

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

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