第一篇:SAS数据输入总结
SAS学习总结
一、SAS的数据录入
(1)直接输入
data first;
input name $ salary;
datalines;a 12b 34c 56d 78
;
run;
注意:datalines的位置以及数据录入后的分号
(2)借助infile可读入文本格式为dat、txt、csv
A.最简单的形式
data first;
infile 'c:userslichaodesktopsasdatatoadjump.dat';
input Toadname $ Jump1 Jump2 Jump3 Jump4;
run;
proc print data=work.first;
run;
B.有空格的情况,需要数一下
data second;
infile 'c:userslichaodesktopsasdataonionring.dat';
input Name $ 1-19 Jump1 22-24 Jump2 25-28 Jump3 30-31 Jump4 33-34 Jump5 37 Jump6 40;
run;
proc print data=work.second;
run;
C.格式重复的情况
data third;
infile 'c:userslichaodesktopsasdataexercise.dat';
input Num1 Num2 Num3 @@;
run;
proc print data=work.third;
run;
注意:@@的用法
D.其他的格式
Ⅰ.输出特定的行
data icecream;
infile 'c:userslichaodesktopsasdataicecreamsales2.dat' firstobs=3 obs=5;
input Flavor $ 1-9 Location Boxessold;
run;
proc print data=icecream;
run;
注意:firstobs和obs的位置不要改变,而且两者可以单独使用
Ⅱ.有缺失值
data class;
infile 'c:userslichaodesktopsasdataallscores.dat' missover;
run;
proc print data=class;
run;
注意:在有缺失值的情况下,如果输出有错误的话就用missover
Ⅲ.非正常的输入:
data third;
infile 'c:userslichaodesktopsasdatapumpkin.dat';
input Name $16.num 3.type $2.date $11.(num1 num2 num3 num4 num5)(4.1);run;
proc print data=third;
run;
注意:16.和3.、4.1等的表示方法,都是表示宽度,相比较数列数的方法更有效;输入格式相同的话可以加括号把格式写在后面的括号里。
Ⅳ.日期的输入:
按照数值处理,根据情况,使用MMDDYYw.或者 DDMMYYw.(3)import 录入其他格式的文件(可导入的格式非常多)
proc import datafile='c:userslichaodesktopsasdatasecond.xls' dbms=xls out=mydata replace;sheet=“sheet1$”;
range=“a1:b3”;
run;
proc print data=mydata;
run;
注意:sheet表示单元表的名字,range表示导入的数据范围
input name $ test1 test2 test3 test4 test5;
第二篇:常用sas语句总结
Engine(引擎)是一种访问架构,SAS系统通过它迅速地对其它数据库管理系统中文件进行读入和写出。
1.LIBNAME语句
1.1解读
定义 SAS 逻辑库。具体地说,它可以
(1)向 SAS 标识 SAS 逻辑库
(2)将引擎与逻辑库关联
(3)让您指定逻辑库的选项
(4)为逻辑库指定逻辑库引用名
通俗得讲,LIBNAME语句把一个libref(库标记名)和一个目录联系起来,使用户可以在SAS语句中使用库标记来指示这个目录。提交该程序时自动引用该 SAS 逻辑库 1.2 语句格式
1、LIBNAME libref
2、LIBNAME libref Clear;
3、LIBNAME libref |_ All_ List;三种格式反映了LIBNAME语句的三种用法 选项说明
LibrefEngineSas-Data-LibraryAccess=Readonly|TempClear_All_List
规定逻辑库规定引擎规定主机系统下一个有效的物理地址规定逻辑库为只读或可修改属性清除与库标记的联系列出所有逻辑库的属性在Log窗口列出逻辑库的属性。2.length语句
SAS变量的基本类型有两种:数值型和字符型。数值型变量在数据集中的存贮一般使用8个字节。SAS的字符型变量缺省的长度是8个英文字符,可以使用LENGTH语句指定变量长度,LENGTH语句一般应出现在定义变量的Input语句之前,格式为: LENGTH 字符型变量名 $长度 例如:length name $20 ;
3.input 语句
3.1解读
INPUT语句 用于向系统表明如何读入每一条记录。它的主要功能有:读入由语句指定的数据列;为相应的数据域定义变量名;确定变量的读入模式(共有四种模式:column模式,formatted模式,list模式及named模式)。
input语句执行后,SAS将读取的数据暂时先保存在内存缓冲区,然后执行后面的语句,后面的语句可以对暂存在内存缓冲区中的变量值进行修改,到最后才将整条数据写入数据集,写入数据集的数据就不能在当前data步中再修改。
注意:INFILE语句用于确定一个包含原始数据的外部文件,必须在执行INPUT语句前执行,如果要在程序中直接嵌入数据,就用CARDS语句代替INFILE语句。
3.2 语句格式(Column模式)
INPUT variable <$> start-column<-end-column><.decimals><@|@@>;
说明: variable 变量名
$ 跟在变量后面,表明这个变量是字符型变量 start-column 起始列号
end-column 结束列号,如果变量值只包含一列,则可省略
.decimals 如果输入值中没有包含一个隔开整数部分与小数部分的小数点,decimals用来显性的指明小数部分 @ 单尾符 @@ 双尾符
举例说明:input name $ 1-10 pulse 11-13 waist 14-15 gender $ 16;
4.SET 语句
Set语句可以用来读取单个数据集中的数据,也可以用来读取多个数据集中的数据拼接SAS新的数据集。程序为:
DATA 新数据集;
SET 输入数据集1 输入数据集2 ….; Run;如果不适用DROP=和KEEP=选项,在新的数据集中将包含所有旧数据集的变量。
5.DO 循环语句
语句一:
DO WHILE(expression);...more SAS statements...END;语句二:
DO UNTIL(expression);...more SAS statements...END;语句三:
DO index-variable=start
DO item-1<,…item-n>
DO over array-name;...more SAS statements...END;例如: data test;
input sc01-sc05;
array s sc01-sc05;
do over s;
s= s*100;
end;
cards;0.95 0.88 0.57 0.90 0.65;这个语句也是SAS比较特殊的循环结构,专用于数组,将数组的每一个元素访问一遍。
6.IMPROT 语句
import过程可以读取的数据有Access数据库、Excel文件和带分隔符的文件。
6.1语法格式
PROC IMPORT
DATAFILE=“filename” | TABLE=“tablename” OUT=
DATAFILE=“filename” 用来指定数据文件的位置,如果是Access则用TABLE=“tablename”指定需要读取的数据表;
OUT= 指定输出数据集的名称;
DBMS=identifier 指定导入数据表的类型;几个常用的DBMS选项如下
ACCESS 读取MS ACCESS2000/2002数据
EXCEL 读取Excel2000/2002数据
CSV 读取逗号分隔的文件
DLM 读取分隔符文件,需要用DELIMITER=指明具体的分隔符
TAB 读取Tab分隔的文件
REPLACE选项替换原来已经存在的数据集,缺省情况下是不替换,并在LOG窗口中予以提示;
6.2 proc import读取带分隔符的文件 语法格式: PROC IMPORT DATAFILE= OUT= DBMS= REPLACE;(Data source statements:)DATAROW=n;DELIMITER=;GETNAMES=YES|NO;说明:
DBMS= 需要指定DLM,逗号分隔文件可省略; DATAROW=n;指定从数据文件的第几行开始读取,该选项缺省情况下,如果getnames=yes则从第二行开始读取,getnames=no从第一行开始读取; DELIMITER=;指定分隔符;
GETNAMES=;告诉SAS是否将数据文件的第一行作为变量读取,该选项缺省为yes。
如果第一行是变量名,而该选项为no则会将列为数值型的第一行读取为缺失值。
当指定getnames=no时,对于DLM文件,则SAS自动将变量命名为VAR1, VAR2,...;对于Excel文件,则SAS自动命名变量为F1, F2, … 举例:
proc import datafile=“C:My Documentsmyfilesdelimiter.txt”
out=mydata
dbms=dlm
replace;
delimiter='&';
getnames=yes;run;6.3 proc import读取Excel文件 语法格式: PROC IMPORT DATAFILE= OUT= DBMS= REPLACE;(Data source statements:)SHEET=;GETNAMES= YES|NO;注:读取Excel时,可以不指定DBMS=选项。举例:
proc import datafile=“c:clinic filesdrug1.xls”
out=drug1;
sheet='lab';
getnames=yes;run;6.4 proc import读取数据库表(如Access)语法格式: PROC IMPORT TABLE= OUT= DBMS= REPLACE;(Data source Statements:)DATABASE= PWD= UID= WGDB= 说明:
DATABASE= 指明数据库存放的路径及名字 UID= 数据库用户名 PWD= 密码 WGDB= 工作组名称 举例:
proc import table=“customers”
out=sasuser.cust
dbms=access97;
uid=“userid”;
pwd=“mypassword”;
database=“c:myfileseast.mdb”;
wgdb=“c:winntsystem32security.mdb”;run;通常情况下,proc import是可以不掌握的,通过视窗操作可能更方便,特不过用proc import能够更精细的控制。在写import过程的时候,要特别注意分号的位置,从最开始的语法格式那里可以看出,proc import后面的一般选项是连在一起写的,中间用空格隔开,最后才以分号结尾;而数据源选项则每一项都要以分号结束。这些地方往往容易出错。
7.CARDS语句
用于直接输入数据,标志着数据块的开始。格式如下:
CARDS;
数据块
;
8.SORT和BY语句
SORT语句将指定的数据集按指定变量排序。使用BY语句可以使生成的数据集按照某个变量排序,但输入数据集必须预先按该变量排序。使用PROC SORT语句可以进行排序,一般形式为:
PROC SORT DATA=数据集 OUT=排序后的数据集; BY 变量; RUN;
e.g.Proc sort date=stockreturn;
by firm date;run;
9.宏
在宏变量前加&来引用宏变量的值。
用一个百分号(%)加宏名称就可以调用该宏。%macro 宏变量名:定义宏变量
%DO
:条件处理至一个匹配的%END出现 %If-%Then /%Else :有条件执行宏
10.MERGE语句
用MERGE语句合并SAS数据集。但是,输入数据集必须预先按该BY变量排序。语句一般形式为: 式为:
DATA 新数据集 ;
MERGE 输入数据集1 输入数据集2 … ; BY 变量; RUN;
e.g.下图展示合并数据集A、B 的结果:
Data gooddata;Merge stockreturn sample(in=a);By firm;If a=1;Run;注意:这里merge语句使用了两个选项,当一个SAS数据步同时读入多个SAS数据集时,可以使用IN=选项来确定本观测来自哪个数据集,in=选项的一般形式是:SAS-data-set(IN=variable)。其中,variable是一个临时的数值型变量; Variable=0 表示观测不是来自本数据集; Variable=1表示观测是来自本数据集;
在这里使用IN选项的目的就是把所有来自数据集sample的观测输出到新数据集gooddata中。
11.REG语句
REG过程用来进行回归分析。
在MODEL语句中有许多选项,其中的几个选项如下:
CLM
回归估计值0.95置信区间的上界和下界。CLI
因变量预报值的0.95置信区间。
P
由输入数据和回归方程计算预报值。输出观测序号,ID变量(需事先规定ID语句),实际值,预报值和残差。如果已规定了CLM、CLI或R,选项P就不需要了。
R
要求残差分析,输出包括选项P的一切内容外,还有其它一些分析
12.MEANS语句
MEANS对指定的数值变量进行简单的统计描述。13.OPTIONS语句
OPTIONS语句临时改变SAS系统的选项设置。
改变后的选项设置在以后的SAS会话或作业中保持有效,直到再次改变它们。
改变SAS系统选项可以用OPTIONS语句,或用显示管理命令OPTIONS菜单。
语句格式:
OPTIONS option-1 <...option-n>;其中:
option规定要改变的SAS系统选项。
第三篇:SAS基础语法总结
一、DATA语句
DATA语句的作用是表明数据步的开始并给出数据集 的名称。
DATA语句的格式为:
DATA 数据集的名称;
数据集的名称必须以英文字母开始,最长不超过8个字符。
二、CARDS语句
CARDS语句的作用是与“;”呼应,标志数据行的开始与结束。
CARDS语句的格式为:
CARDS;数据行;如果使用CARS语句,在CARDS的后面必须紧跟数据行,并且在一个数据步中最多只能使用一个CARDS语句。
三、INPUT 语句
INPUT语句的作用是描述输入记录中的数据,并把输入值赋给相应的变量。INPUT语句的格式为:
INPUT 数据的变量名、顺序及类型;
用INPUT语句是为了读取外部文件的数据或跟在CARDS语句后面的数据。
SAS默认用INPUT语句读取的是数值类型变量的值。若在变量后加’$’,则该变量为字符串类型变量。
为从一行读入多个观测值,应使用行保持符’@@’限制度数指针,使其保持在这一行上读数,知道数据读完为止。
例如:
Input x y@@;
Cards;
8
;
四、INFILE语句
Infile语句的作用是指明外部数据文件的名称,并从这个外部数据文件中读取数据。
INFILE语句的格式为: INFILE ‘外部数据文件名’;
例如,在D盘上有一个名称为xiao.txt的数据文件,其中数据排列为:
A 3.16 B 2.9 B 5.8 B 3 A 4.9 A 4.17 用 INFILE语句读取数据的代码为:
Data ex;Infile ‘D:xiao.txt’;Input z$ x@@;Proc print;
Run;
五、SET语句
SET语句的作用是按照指定的条件从指定的数据集中读取数据机那里新的数据集获奖两个数据集中的观测值纵向连接建立新的数据集。
SET语句的格式为:
SET 数据集名表;例如,从数据集EX中读取数据建立新的数据集EX1,可编辑语句:
DATA EX1;SET EX;将两个数据集D1和D2中的观测值纵向连接建立新的数据集D3,可编辑语句:
DATA D3;SET D1 D2;
六、MERGE语句
MERGE语句的作用是将两个数据集中的各个观测值横向合并建立新的数据集。
MERGE语句的格式为:
MERGE 数据集名表;例如,将数据集D1与D2中的观测值横向合并建立新的数据集D3,可编辑语句:
DATA D3;MERGE D1 D2;
RUN;
七、DROP语句
DROP语句的作用是指定不写到数据集中的变量。DROP语句的格式为:
DROP 变量名表;如果在DATA步中有DROP语句,那么DROP语句中一出现的变量的观测值被删除,未出现的变量的观测值仍保留在新的数据集中。
八、KEEP语句
KEEP语句的作用是指定要写到数据集中的变量。KEEP语句的格式为:
KEEP 变量名表;如果在DATA步4中有KEEP语句,那么KEEP语句中未出现的变量的观测值被删除,已出现的变量的观测值被保留在西你的数据集中。
九、IF语句
IF语句的作用是使SAS继续处理符合IF条件规定的观测值,因而所得到的数据集是原数据集的子集。IF语句的格式为:
IF 条件表达式;如果表达式的值为真,SAS处理当前的观测值,执行DADA步中的语句,如果表达式的值是假,SAS马上返回到DATA步的开始,不处理当前的观测值,不执行DADA步中的语句。
十、PROC语句
PROC语句的作用是指定需要调用的过程以及该过程的若干选择项。PROC语句的格式为:
PROC SAS的过程名;例如,调用print过程,打印数据集ex的内容:
PROC print data=ex;这里的data=数据集名,用来指定本过程所要处理的数据集名,如缺省则处理最新建立的数据集。在PROC步中,还必须确认一些最基本的信息,包括:(1)处理的数据集名,格式为data=数据集名;(2)所涉及的变量名,格式为 var 变量名;(3)分组处理的标志,格式为 by 组变量名;
十一、CLASS语句
class语句的作用是在分析的过程中定义分类变量,再按分类变量的值分组进行数据分析。
Class语句的格式为:
CLASS 变量名;CLASS语句对数据分析所起的作用类似于by语句,但是它们打印输出的格式不相同,并且by语句要求先对变量排序后才能使用。
十二、FREQ语句
freq语句的作用是规定一个变量,以它的值作为数据集中观测值出现的频数。
FREQ语句的格式为:
FREQ 变量;假定某观测值的FREQ变量的值为n,在分析时,改数据集中这个观测值出现的频数便是n。
若n<1,则观测值不参加分析
若n不是整数,则自动取整。观测值的总数等于FREQ变量的和。
常用的SAS过程步
一、print过程
print过程可以打印一个SAS数据集中的全体或部分观测值,还可以打印数 值变量的综合或部分和。
print过程中经常使用的语句有:
proc print [选择项];
var 变量表;by 变量表;sum 变量表;在proc print 语句中可能出现的选择项有
data=数据集名,如果省略这一选择,则打印最新建立的数据集中的数据。
sum语句被用来求变量表中诸变量的总和。
二、sort过程
SORT过程将SAS数据集中的观测值按一个或多个变量的值进行排序,以便 其他的SAS过程利用by语句对这些观测值进行分组处理,排序后的观测值存放在一个新的SAS数据集中或者代替原来的数据集。在SORT过程中经常使用的语句有:
proc sort [选择项];
by 变量表;在proc sort语句中可能出现的选择项有:
data=数据集名,用来说明要排序的数据集名,如果省略这一选择,则指定最新建立的数据集。
out=数据集名,用来说明要输出的数据集名,如果省略这一选择,则原来的数据集被输出的数据集替换。sort过程默认按升序排列,若要按降序排列,在对应变量前增加选择项descending。
三、FORMAT过程
format过程可以对字符或数值变量定义一个所需要的输出格式,使data步以及含有format的语句的过程步中的变量都受到这一输出格式的限制。
通过proc FORMAT过程所定义的格式包括:(1)将输出值转换成不同的值、数值可以变成字符,字符可以变成另外的字符。(2)使输出值保留一定的小数位,否则输出值将有8个小数位。FORMAT过程由下列语句控制:
PROC FORMAT;
VALUE 格式名 格式的定义;为便于识别,格式名通常是原变量名加fmt
如果原变量是字符串,则应当在格式名前加字符串符号。后面的过程中,如果涉及到某变量的输出格式,必须有语句:
FORMAT 变量名 格式名
四、standard过程
standtard过程按给定的平均值和标准差对SAS数据集中的部分或全体变量进行“标准化”变换,并形成新的数据集。
在standard过程中经常使用的语句有:
proc standard [选择项];
var 变量表;freq 变量表;by 变量表;在proc standard语句中可能出现的选择项有:
data=数据集名,用来说明要“标准化”变换的数据集名,如果省略这一选择,则指定最新建立的数据集。
out=数据集名,用来说明含有“标准化”变量的新数据集名,如果忽略这一选择,SAS将按内部程式给出新的数据集名。
此过程将打印输出每个“标准化”变量的输入频数、平均值及标准差。
五、TRANSPOSE过程
transpose过程将一个数据集进行转置,使行变为列而列变为行,也就是使原数据集中样品的观测值变换成新数据集中变量的观测值,而原数据集中变量的观测值则变成新数据集中样品的观测值。transpose过程的格式为:
proc transpose [选择项];var 变量表;by 变量表;在proc transpose语句中可以出现的选择项有:
(1)data=数据集名,用来说明要转置的数据集名;如果忽略这一选择,则指定最新建立的数据集。
(2)out=数据集名,用来说明转置所建立的心数据集名,如果省略这一选择,SAS将按内部程式给出新的数据集名。
(3)prefix=字母(指定一个新前缀,用来构成新变量名)
(4)name=字母(为含有输入数据集中被转置的变量名的输出数据集中的变量命名,如果省略这一选择,SAS将按内部程式指定)。
在var语句中应列出要被转置的变量名,否则原数据集中未在其他语句中列出的所有数值型变量都将被转置,字符型变量必须在var语句中列出才能被转置,未被转置的变量不进入新的数据集,除非它们已经被列入copy或by语句。
by语句使输入数据集分组转置,分组变量被包括在输出数据集中。
第四篇:VB网格中输入数据
VB网格中输入数据
VISUAL BASIC提供的网格控制(Grid)主要是用来直观地输出数据,但不能输入数据,使用起来很不方便。能不能向网格中输入数据呢?笔者提出了两种解决方法,供大家参考:方法一:
改写网格的KeyPress事件,在每次有合法字符输入时,把Grid的Text项和输入字符连接。这种方法缺点是:一代码较复杂,需要处理各种ASCII字符信息;二是通过编程只能实现很少的编辑功能,如用退格键删除前一字符,用Del键删除所有字符;三是这种方法不能输入汉字,使用起来受到很大的限制。
方法二:
利用一文本框作为缓冲,实现编辑功能。当网格改变行列时,把网格当前行列的内容传递给文本框;当网格中有ASCII字符产生时,把输入焦点设置为文本框,并把输入的ASCII字符送给文本框;当编辑完文本框的内容时,按Enter键或TAB键,把文本框的内容送给网格的当前行列,并把输入焦点设置为网格。如下程序所示(其中Textl为文本框,Labell为标签,Gridl为网格):Option ExplicitConst EnterAsc=13Const TabAsc=9Private Sub Form-Load()Labell.Caption=”请输入”End SubPrivate Sub Gridl-KeyPress(KeyAscii As Integer)Text1.StFocusTextl.SelStart=0If KeyAscii<>EnterAsc And KeyAscii<>TabAsc ThenSendKeys Chr(KeyAscii)
End IFEnd SubPrivate Sub Gridl-RowColChange()
Textl.Text=Grid1.TextEnd SubPrivate Sub Text1-KeyPress(KeyAscii As Integer)If KeyAscii=EnterAsc ThenGrid1.SetFocusKeyAscii=0End IfEnd SubPrivate Sub Text1-LostFocus()
Grid1.Text=Text1.TextEnd Sub
第五篇:Q2V8程序计算器输入数据操作方法
Q2V8程序计算器输入数据操作方法(1);
连续交点平曲线与竖曲线三维坐标正反算步骤;
进入 1 菜单
按 MENU2 进入 列表模式
按 SHIFTSET UP 设置串列文件(List File;File 1--6)
按F1设置(输入串列文件 号码;1--6 中的一个)
清除当前选定串列的数据;
按 MENU1进入RUNMAT模式
按 SHIFTPRGM调出程序功能菜单
清除命令; F6F1F3回车(清除了当前串列的全部数据)
(1)平曲线
按 MENU2进入 列表模式(输入平曲线数据)
List 1List2List3List4List5List6List7(起点桩号)(起点X坐标)(起点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转)(不输入)(交点X坐标)(交点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转角)
.....................(不输入)(终点X坐标)(终点Y坐标)
按 MENU9进入选择执行 Q2V8程序界面回车
输入1(只计算平曲线数据)XY(1)/H(2)/XYH(3)=?
显示出;平曲线总的交点个数(不包含起终点)hor-total JD num= 输入0(重新计算平曲线数据)new(0)/old(≠0)hor-JD data=?
显示出;输入平曲线 起点的交点号 hor-curve start JD num=?
输入0(要计算的起点的交点号)(机器开始计算等待.........)
查看计算的结果按 MENU2进入 列表模式(计算按结果如下JD1---JDn)List 1List2List3List4List5List6List7
(起点桩号)(起点X坐标)(起点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转角)(交点桩号)(交点X坐标)(交点Y坐标)(入口缓曲参数)(圆曲半径)(出口缓曲参数)(交点转角)
.....................(终点X坐标)(终点Y坐标)
查看转角值(度分秒)也就是(弧度制变 角度制);
按OPTNF6F2F5