求助:SAS程序编写,做题
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了求助:SAS程序编写,做题相关的知识,希望对你有一定的参考价值。
例如用
id name height weight
1 tom 187 75
2 cendy 169 57
3 mcdonald 189 85
写个程序...
一共有五道,能帮道我的分数不是问题。
谢谢了。在下走投无路啊!
一楼的能不能把联系邮箱给我?我把问题发给你。帮帮忙哈!
data li1;
input id $ name $ height weight@@ ;
cards;
1 tom 187 75
2 cendy 169 57
3 mcdonald 189 85
;
run;
proc means data=li1;
var height weight;
run; 参考技术B SAS实用程序编写技巧(1)(未完待续)2007年06月03日 星期日 19:50 SAS软件包是一个大型的统计分析系统,其核心是多个用于实现统计分析的实用过程。统计分析离不开操作的数据对象, SAS采用的办法是建立SAS数据集。而实现上述的一切都需要编制SAS引导程序,简称SAS程序。
SAS程序由一系列符合SAS语言语法规则的语句组成, 正如用任何一门计算机语言编制的程序一样。SAS语言不仅提供了一般程序设计语言拥有的语句(如循环控制,条件判断,赋值,输入输出等),而且,其丰富的概率函数、分位数函数、样本统计量函数以及随机数函数更是其他语言无法比拟的。SAS程序的基本组成是: 若干SAS语句组成数据步(DATA步),若干SAS语句组成过程步(PROC步),若干DATA步和若干PROC步组成一个完整的SAS程序,其中,DATA步通常产生SAS数据集, 而PROC步则对SAS数据集内的数据进行处理并输出结果或产生新数据集。
本章主要介绍如何产生数据集,而且由于数据集大部分由数据步完成,我们把精力也主要集中于数据步上。
第1节 数据步流程
[例1.5.1] 某小学10名9岁男学生6个项目的智力测验得分资料列于下表中。
表1.5.1 某小学10名9岁男学生6项智力测验得分结果
1. 变量和观测
这是SAS数据集的2个基本概念。可以这样看待它们的关系,SAS对各变量的操作都是在各观测内进行的。从每一个观测对象身上观测到n个变量的具体取值,在SAS中, 把这n个数值写在一行上,称为1个观测。如表1.5.1,共有10个观测,每个观测包含7个变量(含编号)的取值。
2. 建立SAS数据集方法(先看下面的第1个程序)
data a;
input id x1-x6;
cards;
1 14 13 28 14 22 39
2 10 14 15 14 34 35
3 11 12 19 13 24 39
4 7 7 7 9 20 23
5 13 12 24 12 26 38
6 19 14 22 16 23 37
7 20 16 26 21 38 69
8 9 10 14 9 31 46
9 9 8 15 13 14 46
10 9 9 12 10 23 46
;
run;
[说明]DATA语句指明我们要建立一个名字为A的数据集;INPUT语句指明了将要建立的SAS数据集包含的变量,其中,ID代编号,X1—X6分别代表常识、算术、理解、填图、积木、和译码这6个方面的得分。 值得注意的是:象X1-X6这样的简写的列表能够被SAS系统接受, 为SAS程序的书写提供了极大的方便,程序也显得十分简洁;CARDS语句表明下面是用于建立SAS数据集的数据流,数据流以另起一行的一个分号为结束;RUN语句标志着一个DATA步或PROC步的结束, SAS系 统一遇到它,即开始建立SAS数据集或调用过程分析数据。
(5)在程序运行的过程中,我们可以在LOG窗口看到这样的信息:
NOTE:The data set work.a has 10 observations and 7 variables.
它告诉我们,数据集A包含10个观测和7个变量。
(6)每个语句以分号为结束。
下面我们再来看看数据步具体是怎样工作的(数据步流程):
每个DATA步开头的DATA语句总是标志这一步的开始,余下的语句被SAS转换为计算机的机器语句,而且每次通过DATA步执行它们——通常对输入数据中的每个观测执行一次。
在DATA步中所有被提到的变量在SAS内部都被变成当前向量的一部分, 也称为PROGRAM DATA VECTOR(程序数据向量)。即来自输入数据的变量同程序语句产生的变量一起,都在程序数据向量里,而且可以通过程序语句对它们进行操作。如: INPUT X; Y=X+1;
先通过INPUT语句从数据流中获得变量X的值,接着通过赋值语句产生一个新变量Y,它的当前值是X的当前值加1,X和Y都在程序数据向量中。如果不特意指定,DATA步产生的数据集将包含程序数据向量中的所有变量。
用INPUT语句读入或用编程语句产生的变量的初始值,在这个DATA步每执行一次之前置为缺失,除非用RETAIN语句指明,在后面的应用中我们将会看到RETAIN语句将会起什么作用。用SET,MERGE或UPDATE语句读入的变量的初始值自动置为保留。
当SAS执行DATA步的最后一个语句时(或让返回到这一步的开头处理新观测的RETURN语句时),它按常规把程序数据向量的当前值输出到正被创建的SAS数据集中。然后SAS返回到DATA语句之后的第一个语句, 在程序数据向量中初始值不被保留的变量置为缺失。接着开始执行语句来建立下一个观测。如果要在DATA步的一次执行中输出多个观测, 那矩须使用OUTPUT语句。
当SAS已经读完来自输入文件的所有数据时,它继续下一个DATA步或PROC步。
SAS通过DATA步的这些语句处理读入的每个观测,虽然每个语句仅出现一次,但SAS对每个观测都执行这些语句。不包含INPUT,SET,MERGE或UPDATE语句的DATA步只执行一次,否则DATA步中的语句被重复执行直到输入的原始数据执行完了,或直到STOP或ABORT语句被执行。程序语句还可能含有让DATA步中的某些语句执行很多次的语句,如DO循环等。
SAS变量_N_是SAS为每个DATA步自动设置的,它在某时刻的取值表示这个DATA步已经执行的次数。在DATA步中可以引用这个变量,但它不会加到正创建的数据集中。
以上这些原则就是我们编制程序的基础。
[EXAMPLE.SAS]显然是一个最基本的DATA步程序,这里DATA步一共执行了10次, _N_ 的值从1变到10,但这并非最佳的方法。容易看出,在10个观测中,变量ID的值正好从1到10,每增加一个观测, ID值增1。于是我们至少还可以写出3个SAS程序使得CARDS语句后的数据流中不含[EXAMPLE.SAS]中数据的第1列。
程序二:
DATA a;
DO id=1 TO 10;
INPUT x1-x6;
output;
END;
CARDS;
数据流;run;
程序三:
DATA a;
id+1 ;
INPUT x1-x6;
CARDS;
数据流;run;
程序四:
DATA a;
id=_N_;
INPUT x1-x6;
CARDS;
数据流;run;本回答被提问者采纳
自学编程很难,求助·····
为了兑现承诺,也为了自己的一种思考方向——去找到思想的本质——我认为思想的本质就是程序与逻辑,因此,我就必须会应用“程序及其编写程序”,到了今天,自己才迈出一步,到网上搜索了不少的有关编程入门的知识,与网站。
由此注册了两个身份,以便于更好地运用那个网站的资源,有机会能够互动和求助。难度是不小的。
其一,这不是将简单地运用英语与数学。很多的英语单词,也许尝试几次,可以记住,实际上,计算机语言的所需最基本的英语单词,恐怕不下于200个,单单迈过此关,就要花几天吧。
其二,自学是极其枯燥的。除非有强大的动机和兴趣。我为何要学习这门语言啊?虽然前面我有所提示,这严格来说,是不充分的。学习需要能力,资源,时间,和乐趣。前两者的层面,似乎自己缺乏。
其三,如何求助?如何能够得偿所愿?在几百元以内的学费,这是容易的。您,能够成为我的贵人?——我的一个邮箱是3432307892@qq.com,我的微信号是15884811828(可以微信付款的)
以上是关于求助:SAS程序编写,做题的主要内容,如果未能解决你的问题,请参考以下文章
JAVA编程问题求助 编写程序,把一个数组中的元素倒过来。例如原数组为1,2,3,4,5。则倒排
求助,用python编写一个模拟个人所得税计算器程序,数据看图