楼主: eric_darcy
2994 12

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

  • 6关注
  • 2粉丝

博士生

22%

还不是VIP/贵宾

-

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

+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
拉您进交流群

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

GMT+8, 2024-5-1 05:15