sas 程序求助

sas 程序求助,第1张

data tmp

set SASHELP.workers(firstobs=10 obs=15)

if ELECTRIC>260

run

proc printrun

Obs DATEELECTRICMASONRY

1 OCT77 278.6 288.7

2 NOV77 276.2 286.2

3 DEC77 274.6 276.7

4 JAN78 262.1 234.3

输出4条记录。

解法2:

data tmp

set SASHELP.workers(firstobs=10 obs=15)

where ELECTRIC>260

run

proc printrun

Obs DATEELECTRICMASONRY

1 MAY78 278.0 295.5

2 JUN78 289.5 308.3

3 JUL78 296.6 306.9

4 AUG78 305.1 315.3

5 SEP78 307.8 310.6

6 OCT78 308.2 316.3

输出6条记录。

思考:上述两种解法为什么输出不一样?请注意if语句和where语句的拆明区别。

区别:

1. if语句是面向PDV的,对当前PDV中的数据进行判断,满足条件时将其写入到外部数据集;where语句也是面向PDV的,它使用于从外部数据源读数据到PDV之前进行判断,当满足条件时才被写入到PDV。显然一个在写入PDV之前,一个在写入PDV之后,两者是有差异的。

2. 当没有数据集选项firstobs=10 obs=15时,if语句和where语句用法结果相同,但有这两个选项时效果就不同了。有这两个选项,if语句是从原数据集(或数据源)的观测记录进行计算个数,即从原数据集的第10号观测开始读入到PDV中,然后再判断是否满足if条件,若满足则输出到外部数据集,直到原数据集的第15号观测结旅手告束。而where语句是在薯核读入到PDV之前就进行判断的,所以这里的firstobs的意思是从使得满足where条件的第10个观测开始,而不是原数据集的第10个观测开始。

综上可知,该题中应使用if语句。

SAS的数据步和过程步以及书写规则

每个SAS程序可以由许多步构成,

一些简单的程序,是由许多完成单个动作的“程序步”和一些设定环境的语句构成的。SAS只有两种程序步:

1. 数据步(Data Step):读入源数据文件和SAS数据集,修改、编辑、或创建SAS数据集或文本文件;

2.过程步烂液巧(Proc Step):面向SAS数据集,饥键完成某个特定的计算,分析,和呈现的功能。

每个程序都是由若干语句构成。每个语句是有一个关键词开始,并以分号结束。通常就用开始的关键词命名这个语句。

DATA语句与PROC语句分别标志着数据步和过程步的开始,RUN语句或另一个程序的开始标志着程序的结束。

SAS程序的书写规则:

SAS程序是由SAS语句构成的。每个语句由关键词开始,分号结束。在程序编写时,SAS语句的书写格式比较自由,即:

1.语句可在行的任一列开始和结束;

2.语句的词之间可以用一个或多个空格符或其它特殊字符隔开。

3.一埋帆个语句可以分写为多行(换行时,换行符相当于一个空格符)

4.多个语句也可以写在同一行。

1、首先,打开 *** 作页面州袭厅,导入要 *** 作的数据。

2、在数据集test中,含有学生姓名name,班级class,课程course和成绩score,现在来求出每个学生的总成绩分别是多少,代码如下。

3、如果想将结果保存到数据集里面去,则代码如下。

4、接下来来求出两个班的平均成绩分别是多少。

5、接下来来求出两个班的每一科的平均成绩分别是多少。

6、group by后面的变量禅芦就是需要进行分组的变量,可以根据自己的需要进行修改,分组册隐汇总排序就完成了。


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12366042.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-24
下一篇 2023-05-24

发表评论

登录后才能评论

评论列表(0条)

保存