经管之家App
让优质教育人人可得
立即打开
全部版块
我的主页
›
论坛
›
数据科学与人工智能
›
数据分析与数据科学
›
SAS专版
求助:关于DATA步的SET语句的作用机理问题
楼主
listz
9871
7
收藏
2009-08-20
求助:关于DATA步的SET语句的作用机理问题
哪位牛人能给解释下DATA步的SET的语句具体是如何来读取数据集的。是一条一条观测读,还是整体读?
比如以下这个程序:
data test;
input a b;
datalines;
1 2
1 3
1 4
1 5
1 6
1 7
;
run;
data test;
jianye=0;
if a=1 then jianye+1;
set test;
run;
proc print data=test;
run;
运行后的输出结果是
Obs jianye a b
1 0 1 2
2 1 1 3
3 1 1 4
4 1 1 5
5 1 1 6
6 1 1 7
按理来说第一条观测的jianye变量不应该是0,而应该是1呀,为什么会出现这种状况呢?恳请牛人帮助解答。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
全部回复
沙发
sushe1527
2009-8-20 16:20:15
data test;
input a b;
datalines;
1 2
1 3
1 4
1 5
1 6
1 7
;
run;
data test;
jianye=0;
set test;
if a=1 then jianye+1;
run;
proc print data=test;
run;
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
藤椅
horace_chen
2009-8-20 16:45:23
SET的主要作用是读入数据集中的数据,默认情况下,DATA步每读入一个观测都要执行一次DATA步。
在LZ的例子中,建立数据集TEST第一个观测时,
第一步:先把0赋值给变量jianye,
第二步:执行if a=1 then jianye+1,因为还没读入变量A的值,所以A为默认的缺失值,jianye=0;
第三步:执行set test,读入第一条数据,此时a=1;
之后就是循环执行DATA步,直到把TEST的所有观测都读完。
二楼把SET TEST放在if a=1 then jianye+1之前执行,所以第一个观测 jianye=1。
关于DATA步的执行过程,建议LZ读读这篇文章《The Secret Life of the Data Step》。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
板凳
listz
2009-8-20 16:58:25
2#
sushe1527
谢谢你,的确如此。
可见我基础很不扎实啊。
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
报纸
listz
2009-8-20 17:11:10
3#
horace_chen
你讲得很透彻,我终于理解了DATA步的原理,谢谢你。只是还有一事不明白,一个DATA步的结尾是以什么作为标志的?我看见挺多代码里,DATA步的结尾都没有 写 RUN。 是不是遇到下一个DATA关键字或者PROC关键字之前的所有内容都算作本次DATA步的内容?
还有,SAS中有没有像C语言那样的单步执行功能?
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
地板
horace_chen
2009-8-21 09:39:47
1、多个DATA步,或多个PROC步,或DATA步和PROC步混用时,后一个DATA语句或PROC起到RUN语句的作用。
2、SAS有个Debug功能,可以让程序单步执行。
data test /debug;
jianye=0;
set test;
if a=1 then jianye+1;
run;
执行程序后进入调试状态,每按一次ENTER键就执行一步
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
点击查看更多内容…
7楼
listz
2009-8-21 11:17:39
7#
horace_chen
确实很好用啊。再贪心一步:怎么样看到单步执行过程中,各个变量值的实时变化?
还有,就是如果我要终止调试过程,是不是只用把debug source和debug log 这两个窗口关掉就行?
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
8楼
dlennn
2015-5-7 15:00:49
学习了,谢谢!
扫码加我 拉你入群
请注明:姓名-公司-职位
以便审核进群资格,未注明则拒绝
相关推荐
帮忙看看这个data步输出什么
求助:关于锁表问题
【求组】SAS语句可不可以实现判断程序是否已执行?
DATA步中何时和怎么跳出的问题?
SAS data步求助
问:如何在data步中快速计算分组内循环之对数和
请教一个问题。。。。。
三个小程度讨论在data步input 和set 的区别?
SAS data步循环
data步 set多个数据集后的if语句问题
栏目导航
SAS专版
休闲灌水
外文文献专区
经管文库(原现金交易版)
宏观经济学
新手入门区
热门文章
2026“课题申报”抢跑号角的已吹响!国社科 ...
CDA 认证考试大纲 2025 重磅更新:一二级考 ...
英文书籍
英文书籍
国家级都市圈谁在领跑:2025华高莱斯产城瞭 ...
中国移动:智能体互联网技术白皮书2025
超越普里瓦洛夫无穷乘积与它对解析函数的应 ...
超越普里瓦洛夫数项级数卷
您提出了一个足以获得诺贝尔奖的核心概念— ...
2012-2024年上市公司工业机器人渗透率数据集 ...
推荐文章
10月重磅来袭|《打造Coze/Dify专属学术智能 ...
高校老师和学生都在偷偷上的智能体课,到底 ...
最快1年拿证,学费不足5W!热门美国人工智能 ...
关于如何利用文献的若干建议
关于学术研究和论文发表的一些建议
关于科研中如何学习基础知识的一些建议 (一 ...
一个自编的经济学建模小案例 --写给授课本科 ...
AI智能体赋能教学改革: 全国AI教育教学应用 ...
2025中国AIoT产业全景图谱报告-406页
关于文献求助的一些建议
说点什么
分享
微信
QQ空间
QQ
微博
扫码加好友,拉您进群
各岗位、行业、专业交流群