搜档网
当前位置:搜档网 › SAS学习系列03. 导入数据Ⅰ

SAS学习系列03. 导入数据Ⅰ

SAS学习系列03. 导入数据Ⅰ
SAS学习系列03. 导入数据Ⅰ

03. 导入数据Ⅰ

SAS读取的数据的方法主要有以下几种:

1. 直接输入;

表格形式输入数据,可以定义变量、设置属性;

程序编辑器data步中直接输入;

2. 从原始数据文件中创建一个SAS数据集;

data步可以读取任何形式的原始数据文件,也可以用导入向导(Import Wizard)、导入过程(IMPORT procedure)

3. 将其他软件中的数据文件转换成SAS数据集;

如果安装SAS/ACCESS模块,可以用导入过程和导入向导将Excel、Lotus、dBase和Access文件导入SAS数据集

4. 直接读取其他软件的数据集;

SAS/ACCESS产品可以不用转换数据格式读取数据库管理系统,包括ORACLE,DB2,INGRES和SYBASE的数据;使用Excel engine、Access engine和SPSS engine来读取其数据

(一)直接输入

1.打开【工具】——【表编辑器】,在表编辑器窗口以表格形式

输入数据,可以定义变量、设置属性。(略)

2.data步中直接输入(例如SAS介绍及基础篇中的例1)

(二)用导入向导(Import Wizard)读取文件

步骤:

1.打开【文件】——【导入数据】,调出导入向导窗口;

2.选择要导入的数据类型;

3.指定要导入的文件位置,SAS默认第一行存放变量名,从第二

行开始存放数据(Options可以改变这种默认选择);

4.选择数据集要存放的地址,并为数据集命名;

5.(可选)创建一个proc import语句,可以执行它再次导入这

个数据。

(三)从外部文件导入数据

一、读取空格或分隔符分开的数据

语法:

data 数据集名;

infile ‘文件路径+文件名’ <可选参数>;

input变量1 变量2 …;

注:infile语句告诉SAS外部数据的存放路径和文件名;

示例:

data students;

infile'c:\MyRawData\Studens.dat' DLM = ',';

input Name $ Age Height;

注:这是创建临时数据集work.students,若要创建永久数据集,需要指定二级数据集名称。例如,

libname myworks 'D:\SASWorks';

data myworks.students;

infile'c:\MyRawData\Studens.dat' DLM = ',';

input Name $ Age Height;

1.最简单的数据文件

(1)至少被一个空格,缺失值用“.”表示;

(2)字符串不含空格,少于8个字符;

(SAS默认字符串是8个字符,多于8个字符需要指定列宽)

例1 读取路径c:\MyRawData\下的数据文件ToadJump.dat,内容如下:

代码:

data toads;

infile'c:\MyRawData\ToadJump.dat';

input ToadName $ Weight Jump1 Jump2 Jump3;

run;

proc print data = toads;

title'SAS Data Set Toads';

run;

运行结果:

注:(1)Nosiy的数据溢出到第二行了,但这不影响,SAS会按照变量顺序自动跳到下一行读取;

(2)程序将不加选择的逐行逐列的读入所有数据记录。

infile语句可以加上可选参数,

2.MISSOVER选项(处理每行数据个数长短不一)

input语句中输入的几个变量,SAS在观测值中就读取几个变量,如果一行未读完,则进入下一行直到输入的变量都读取了变量值。可以让SAS不进入下一行读取,未赋值的变量读为缺失值。

例2 读入下面数据(c:\MyRawData\AllScores.dat),一个学生应该有5门课的成绩,但由于最后两门是自学课程,不是所有学生都完成,故而缺失:此时就需要加上MISSOVER。

代码:

data class102;

infile'c:\MyRawData\AllScores.dat'MISSOVER;

input Name $ Test1 Test2 Test3 Test4 Test5;

run;

proc print data = class102;

run;

运行结果:

3.DLM和DSD选项

默认读入的数据是空格分隔,若是其它分隔符分隔,在infile语句中加上DLM=’分隔符’:

逗号分隔——DLM = ‘,’

制表符分隔——DLM=’09’X(制表符的十六进制值是09)有时后面需要再加上DSD,有三个作用:

a. 忽略引号中数据的“假分隔符”(例2);

b. 自动将字符串中的引号去掉;

c. 将两个相邻的分隔符当作缺失值来处理。

例3 读取路径c:\MyRawData\下的数据文件Bands.csv,内容如下:

注意第3行引号中的逗号并不是分隔符,另外,每行数据长短不一样,所以还需要加上MISSOVER.

代码:

data music;

infile'c:\MyRawData\Bands.csv'DLM = ','DSD MISSOVER;

input BandName:$30. GigDate:MMDDYY10. EightPM NinePM TenPM ElevenPM;

run;

proc print data = music;

title'Customers at Each Gig';

run;

运行结果:

4.FIRSTOBS = m OBS=n选项

有的数据文件包括数据的描述,需要用该选项告诉SAS从第m 行开始读取到第n行结束。

例4 读取如下的数据文件(c:\MyRawData\IceCreamSales2.dat):

注意第3行到第5行是有效数据。

代码:

data icecream2;

infile'c:\MyRawData\IceCreamSales2.dat'FIRSTOBS = 3 OBS=5;

input Flavor $ 1-9 Location BoxesSold;

run;

proc print data = icecream2;

run;

运行结果:

二、读取按固定列排列的数据

(1)同一变量的值都占据相同范围的列内;

(2)变量值是字符串或者标准数值。

注:标准数值是指数据、小数点、正负号、和科学计算法的E。逗号数据和日期都不是标准数值。比第1种的优势在于:

●不要求变量值之间有空格;

●缺失值可以直接用空格代替;

●字符串中可以包含空格;

●可以跳过不需要的变量。

语法:

input 变量1 n-m…;

注:“n-m”表示变量1数据所占的列范围,第n列至第m列。

示例:

input Name $ 1-10 Age 11-13 Height 14-18;

1.标准按固定列排列的数据

例5 读取路径c:\MyRawData\下的数据文件OnionRing.dat,内容如下:

代码:

data sales;

infile'c:\MyRawData\OnionRing.dat';

input VisitingTeam $ 1-20 ConcessionSales 21-24 BleacherSales 25-28 OurHits 29-31 TheirHits 32-34 OurRuns

35-37 TheirRuns 38-40;

run;

proc print data = sales;

title'SAS Data Set Sales';

run;

运行结果:

2.TRUNCOVER选项

使用按固定列的input或控制格式(下节)的input输入时,若某行的数据(+空格)没有占到指定列的宽度,可能会转到下一行读取,此时必须用TRUNCOVER选项,以避免发生这种错误。

例6 读取如下数据(c:\MyRawData\Address.dat):

注意三行的长度都不一样,input中只能指定最长的一行。

代码:

data homeaddress;

infile'c:\MyRawData\Address.dat'TRUNCOVER;

input Name $ 1-15 Number 16-19 Street $ 22-37;

run;

proc print data = homeaddress;

run;

运行结果:

三、读取非标准格式的数据文件

非标准格式的数据,包括日期数据、“8,765,432”、含美元符号、十六进制数等。

语法:

input 变量名变量格式…;

示例:

input Name $ 10. Age 3. Height 5.1 BirthDate MMDDYY10.; 例7 读取路径c:\MyRawData\下的数据文件Pumpkin.dat,内容如下:

代码:

data contest;

infile'c:\MyRawData\Pumpkin.dat';

input Name $16. Age 3. +1 Type $1. +1 Date MMDDYY10.

(Score1 Score2 Score3 Score4 Score5) (4.1);

run;

proc print data = contest;

title'Pumpkin Carving Contest';

run;

运行结果:

程序说明:

(1)“Name $ 10.”表示字符型变量Name,共占10列宽度,无小数位;

(2)“Height 5.1”表示数值型变量Height,共占5列宽度,其中1位小数位;

(3)“+1”表示跳过一列,即原始数据中Age后面有一个空格;

(4)“MMDDYY10.”共占10位的日期格式;

(5)Score1 Score2 Score3 Score4 Score5五个变量格式相同,可以用小括号共同指定格式;

附:变量格式及实例列表

通常可以混合使用前面的三种方式,例如,

例8 读取路径c:\MyRawData\下的数据文件NatPark.dat,内容如下:

代码:

data nationalparks;

infile'c:\MyRawData\NatPark.dat';

input ParkName $ 1-22 State $ Year @40 Acreage COMMA9.;

run;

proc print data = nationalparks;

title'Selected National Parks';

run;

运行结果:

程序说明:

符号“@”是列指示器,“@40”告诉SAS在读取Acerage变量之前,移动到第40列去;若没有“@40”,Comma9告诉SAS读取9列,将会读取包括空格在内的9列,这便会导致输出结果有问题:

四、读取凌乱的数据

有的数据排列混乱,长度不一,不知道从哪列开始,但是要读取的数据前面的字符或单词是固定的。可以利用列指示器“@”+固定字符串,定位位置来读取数据。

语法:

input@ ‘字符串’变量名…;

示例:

input @'Breed:' DogBreed $;

另外,input读取字符串变量默认为8个字符,若超过8个字符,则需要定义长度,定义为$length,在该长度中,空格也算在内。若要使SAS读取过程中遇到空格则不再继续读取,则要在$length.前面加冒号“:”。比如原始数据中有这么一行:

My dog Sam Breed: Rottweiler Vet Bills: $478

用下述述不同方法读取,会有不同结果:

例9 读取路径c:\MyRawData\下的数据文件Canoes.dat,内容如下:

读取学校名和时间。

代码:

data canoeresults;

infile'c:\MyRawData\Canoes.dat';

input @'School:' School $ @'Time:' RaceTime :STIMER8.;

run;

proc print data = canoeresults;

title"Concrete Canoe Men's Sprint Results";

run;

运行结果:(注意:时间转化为以秒为单位)

程序说明:

(1)@’School:’和@’Time:’来指定读取学校名和时间的起始位置;

(2)由于Time占的字节数不同,用了冒号修饰符,:STIMER8. 来读取时间,STIMER8是时间格式。若没有冒号修饰符,当遇到字符位数不够时,SAS将会跳到下一个数据行去接着读取,输出错误结果:

例10 读取路径c:\MyRawData\下的数据文件weblogs.txt,内容如下:

读取其中的访问日期和访问的文件名。

代码:

data weblogs;

infile'C:\MyRawData\weblogs.txt';

input @'[' AccessDate DATE11. @'GET' File :$20.;

proc print data = weblogs;

title'Dog Care Web Logs';

run;

运行结果:

五、读取非“一行一个观测值”数据、有选择地读取观测值

1.跨行观测值数据

例11 读取路径c:\MyRawData\下的数据文件Temperature.dat,内容如下:

注意一个观测值占据3行。

代码:

data highlow;

infile'c:\MyRawData\Temperature.dat';

input City $ State $

/ NormalHigh NormalLow

#3 RecordHigh RecordLow;

run;

proc print data = highlow;

title'High and Low Temperatures for July';

run;

运行结果:

程序说明:

(1)SAS先读取第一行的city变量和state变量,斜线/告诉SAS 移动到下一行的第一列,以便读取normalhigh和normallow.

(2)#3告诉SAS移动到第三行的第一列以便继续读取观测值的recordhigh变量和recordlow变量。

2.一行有多个观测值的数据

当一行出现多个观测值时,可以在input语句结尾加一个停止符号@@.

例12 读取路径c:\MyRawData\下的数据文件Precipitation.dat,内容如下:

注意第一行包含2个观测值。

代码:

data rainfall;

infile'c:\MyRawData\Precipitation.dat';

input City $ State $ NormalRain MeanDaysRain @@;

run;

proc print data = rainfall;

title1'Normal Total Precipitation and';

title2'Mean Days with Precipitation for July';

run;

运行结果:

3.有选择地读取部分观测值

有时候只需要读取原始数据的部分观测值,比如只需要年鉴中的女性数据、收入超过10万的人口数据等。实现方法:

在SAS读取某一行观测值时,先读取到“判断”变量,然后在input 语句结尾加符号@,(叫做trailing at),告诉SAS先停在此行,同时用if语句检测此观测值是否满足条件,若满足,那么可以再用一个input 语句来读取其它变量。

SAS常用函数大全

一、数学函数 ABS(x) 求x的绝对值。 MAX(x1,x2,…,xn) 求所有自变量中的最大一个。 MIN(x1,x2,…,xn) 求所有自变量中的最小一个。 MOD(x,y) 求x除以y的余数。 SQRT(x) 求x的平方根。 ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如 ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。 CEIL(x) 求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。 FLOOR(x) 求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。 INT(x) 求x扔掉小数部分后的结果。 FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。 LOG(x) 求x的自然对数。 LOG10(x) 求x的常用对数。 EXP(x) 指数函数。 SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。 ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。 ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。 ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。 SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切 ERF(x) 误差函数 GAMMA(x) 完全函数

此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY 函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。 二、数组函数 数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括: DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。 DIM k(x) 求数组x第k维的元素的个数。 LBOUND(x) 求数组x第一维的下界。 HBOUND(x) 求数组x第一维的上界。 LBOUND k(x) 求数组x第 k维的下界。 HBOUND k(x) 求数组x第 k维的上界。 三、字符函数 较重要的字符函数有: TRIM(s) 返回去掉字符串s的尾随空格的结果。 UPCASE(s) 把字符串s中所有小写字母转换为大写字母后的结果。 LOWCASE(s) 把字符串s中所有大写字母转换为小写字母后的结果。 INDEX(s,s1) 查找s1在s中出现的位置。找不到时返回0。 RANK(s) 字符s的ASCII码值。 BYTE(n) 第n个ASCII码值的对应字符。 REPEAT(s,n) 字符表达式s重复n次。

【原创】如何使用SAS从Excel中读取一系列单元格数据分析报告论文(代码+数据)

咨询QQ:3025393450 欢迎登陆官网:https://www.sodocs.net/doc/0e18590112.html,/datablog 如何使用SAS从Excel中读取一系列单元格数据分析报告 原文链接:https://www.sodocs.net/doc/0e18590112.html,/?p=5211 电子表格不是数据库。但是,我们中的许多人使用电子表格就好像它们是数据库一样,然后当电子表格布局不支持数据库样式严格的可预测行,列和变量类型时,我们就会挣扎- 这是分析和报告所需的基本元素。如果您使用SAS从Microsoft Excel读取数据,当您需要的数据不是从单元格A1开始时,您可以做什么? 通过设计,SAS可以从电子表格中的任何单元格范围读取数据。在本文中,我将介绍如何在PROC IMPORT中使用RANGE语句来获取所需的数据。 对于SAS 9.4及更高版本,SAS建议使用DBMS = XLSX以获得最大的灵活性。它适用于所有操作系统,无需其他组件,如PC文件服务器。您的Excel文件必须采用Excel 2007或更高版本格式(XLSX)。你这样做需要SAS / ACCESS 到PC文件的许可证。(刚刚学习?这些DBMS = XLSX技术也适用于SAS大学版。) 如果您的Excel数据不是从单元格A1(导入过程的默认起点)开始,那么您可以添加包含特定单元格的RANGE =值。最简单的方法是在Excel中使用命名范围来定义数据的确切边界。 如何添加命名范围 要在Excel中定义命名范围,请突出显示要包括的单元格范围,然后只需在“名称框”中键入范围的新名称:

咨询QQ:3025393450 欢迎登陆官网:https://www.sodocs.net/doc/0e18590112.html,/datablog 然后保存Excel文件。 然后要导入SAS,请在RANGE =选项中指定范围名称: proc importdatafile="/myprojects/myfile.xlsx"out=mydatareplace;range="myspecialrange";run; 对单元格区域使用Excel表示 如果您不提前知道范围怎么办?您可以使用PROC IMPORT读取整个工作表,但结果将不包含所需的列标题和类型。考虑这样一张表:

SAS学习系列03. 导入数据Ⅰ

03. 导入数据Ⅰ SAS读取的数据的方法主要有以下几种: 1. 直接输入; 表格形式输入数据,可以定义变量、设置属性; 程序编辑器data步中直接输入; 2. 从原始数据文件中创建一个SAS数据集; data步可以读取任何形式的原始数据文件,也可以用导入向导(Import Wizard)、导入过程(IMPORT procedure) 3. 将其他软件中的数据文件转换成SAS数据集; 如果安装SAS/ACCESS模块,可以用导入过程和导入向导将Excel、Lotus、dBase和Access文件导入SAS数据集 4. 直接读取其他软件的数据集; SAS/ACCESS产品可以不用转换数据格式读取数据库管理系统,包括ORACLE,DB2,INGRES和SYBASE的数据;使用Excel engine、Access engine和SPSS engine来读取其数据 (一)直接输入 1.打开【工具】——【表编辑器】,在表编辑器窗口以表格形式 输入数据,可以定义变量、设置属性。(略) 2.data步中直接输入(例如SAS介绍及基础篇中的例1)

(二)用导入向导(Import Wizard)读取文件 步骤: 1.打开【文件】——【导入数据】,调出导入向导窗口; 2.选择要导入的数据类型; 3.指定要导入的文件位置,SAS默认第一行存放变量名,从第二 行开始存放数据(Options可以改变这种默认选择); 4.选择数据集要存放的地址,并为数据集命名; 5.(可选)创建一个proc import语句,可以执行它再次导入这 个数据。 (三)从外部文件导入数据 一、读取空格或分隔符分开的数据 语法: data 数据集名; infile ‘文件路径+文件名’ <可选参数>; input变量1 变量2 …; 注:infile语句告诉SAS外部数据的存放路径和文件名; 示例: data students; infile'c:\MyRawData\Studens.dat' DLM = ','; input Name $ Age Height; 注:这是创建临时数据集work.students,若要创建永久数据集,需要指定二级数据集名称。例如,

SAS函数介绍

Functions and CALL Routines by Category Categories and Descriptions of Functions Category Function Description Array DIM Returns the number of elements in an array HBOUND Returns the upper bound of an array LBOUND Returns the lower bound of an array Bitwise Logical Operations BAND Returns the bitwise logical AND of two arguments BLSHIFT Returns the bitwise logical left shift of two arguments BNOT Returns the bitwise logical NOT of an argument BOR Returns the bitwise logical OR of two arguments BRSHIFT Returns the bitwise logical right shift of two arguments BXOR Returns the bitwise logical EXCLUSIVE OR of two arguments Character String Matching CALL RXCHANGE Changes one or more substrings that match a pattern CALL RXFREE Frees memory allocated by other regular expression_r(RX) functions and CALL routines CALL RXSUBSTR Finds the position, length, and score of a substring that matches a pattern RXMA TCH Finds the beginning of a substring that matches a pattern and returns a value RXPARSE Parses a pattern and returns a value Character BYTE Returns one character in the ASCII or the EBCDIC collating sequence COLLATE Returns an ASCII or EBCDIC collating sequence character string COMPBL Removes multiple blanks from a character string COMPRESS Removes specific characters from a character string DEQUOTE Removes quotation marks from a character value INDEX Searches a character expression for a string of characters INDEXC Searches a character expression for specific characters INDEXW Searches a character expression for a specified string as a word

SAS系统和数据分析输入输出格式

第五课输入输出格式 一、SAS数据集中变量的类型 SAS共有两种类型的变量: ●字符型变量━━以ASCII码存放,最大长度不超过200字符 ●数据型变量━━以浮点数存放,长度为8个字节 SAS数据集的矩阵式结构要求每个观测的每个变量值都必须存在,因此如果某个数据值缺失,系统会自动补上一个缺失值。对于数字型变量,这个值显示为一个点“.”,而对于字符型变量,这个值显示为空格。 二、输入和输出格式 SAS数据集的数据值的内部存放格式并不一定与该数据值的输入和输出格式一致,这取决于SAS的两个重要功能:输入格式(Informats)和输出格式(Formats)。输入格式指示SAS 系统如何读入数据,而输出格式指示SAS系统如何输出数据。它们的一般形式如下: ●输入格式:<$>informat. ●输出格式:<$>format. 其中,$符号指示这是个字符输入输出格式,没有$符号表示是数值输入输出格式;Informat 是一个输入格式的名字,format是一个输出格式的名字;w是宽度值,对许多输入输出格式这个值是输入输出数据的列数;d在数值输入输出格式中是小数部分的长度;点“.”是所有输入输出格式中必须包含的分隔符,作为名字的一部分。如果在格式中省略w和d值,SAS 系统使用缺省的值。在SAS系统6.12版本中有五类输入格式,字符输入格式共有14种,数值输入格式共有35种;四类输出格式,字符输出格式共有13种,数值输出格式共有41种。 三、日期时间值在SAS系统中的存储 当变量的值表示日期、时间和日期时间时,在这种特殊的情况下,用户还需了解日期时间值在SAS系统中是怎样被存储的。SAS系统存储日期值为: ●1960年1月1日和这个日期之间的天数 例如,1962年3月8日被存储为797(即366+365+31+28+7),1958年10月1日被存储为-457(即-365-31-30-31)。SAS系统存储时间值为:-457 ●从午夜开始到此刻的秒数 例如,8:18存储为29880(8×60×60+18×60)。一个日期时间值存储为1960年1月1日午夜到这个日期时间之间的秒数。例如,1962年3月8日8:18存储为6915960(797×24×360+29880)。SAS系统6.12版本提供了17种日期、时间和日期时间的输入格式,31种输出格式。 四、几种常用的输入输出格式 如表5.1所示。 表5.1 常用的输入输出格式 主要的输入输出格式名描述

一些常用的SAS命令

常用SAS命令 1. SAS的子窗口主要有浏览器窗口(EXPLORER)、结果窗口(RESULTS)、程序编辑器窗口(program editor)、日志窗口(log)、输出窗口(output); 2.切换至日志窗口的命令是log、热键是F6;切换至输出窗口的命令是output、热键是F7; 3.提交SAS程序的命令是submit; 4. SAS系统是大型集成软件系统,具备完备的数据访问、管理、分析和呈现及应用开发功能; 5. SAS数据集是一类由SAS系统建立、维护和管理的数据文件; 6.为了实现存储和管理面向对象的开发任务,SAS建立目录册(catalog)类型的文件,在这一类文件中可以存储整个应用系统,包括它的界面,源程序和各种对象间的连接; 7. SAS逻辑库是一个逻辑概念,一个逻辑库就是存放在同一文件夹或

几个文件夹中的一组SAS文件; 8.在SAS软件系统的信息组织中,总共只有两个层次:SAS逻辑库是高一级的层次,低一级的层次就是SAS文件本身; 9.在SAS系统中,为便于访问一个SAS文件,要为该SAS文件所在的位置指定一个SAS逻辑库,即赋予一个逻辑库名,在指定逻辑库名后,就可使用两级命名的方式引用SAS文件:逻辑库名.文件名; 10.在每个SAS进程一开始,系统就自动地指定了一些逻辑库供用户使用,它们是WORK、SASHELP和SASUSER; 11.在每个SAS进程开始时系统缺省地创建名为work的SAS逻辑库,它是一个临时逻辑库,在引用WORK库中的SAS文件时,可省略逻辑库名; 12.永久逻辑库是指它的内容在当前SAS进程结束时仍被保留的SAS 逻辑库,在SAS系统中除了库名为WORK以外的逻辑库都是永久库; 13. Sashelp包含所安装SAS系统各个产品有关的SAS文件,运行安装的SAS系统所需要的SAS文件缺省地存储在这个逻辑库中;

SAS 常用函数汇总

SAS 常用函数汇总 一、数学函数 ABS(x) 求x的绝对值。 MAX(x1,x2,…,xn) 求所有自变量中的最大一个。 MIN(x1,x2,…,xn) 求所有自变量中的最小一个。 MOD(x,y) 求x除以y的余数。 SQRT(x) 求x的平方根。 ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如 ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。CEIL(x) 求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。 FLOOR(x) 求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。 INT(x) 求x扔掉小数部分后的结果。 FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。 LOG(x) 求x的自然对数。 LOG10(x) 求x的常用对数。 EXP(x) 指数函数。 SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。 ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。 ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。 ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。 SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切 ERF(x) 误差函数 GAMMA(x) 完全函数 此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。 二、数组函数 数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括:DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。 DIM k(x) 求数组x第k维的元素的个数。 LBOUND(x) 求数组x第一维的下界。 HBOUND(x) 求数组x第一维的上界。 LBOUND k(x) 求数组x第 k维的下界。

sas读入数据全解析

SAS数据步导入数据终极汇总——经典,一看就会 一、将数据录入SAS——DATA Step / Viewtable 1.Internal raw data- Datalines or Cards 命令; 2.External Raw data files- Infile 命令+ Input 命令; 二、将数据文件读入SAS ——DATA Step / PROC IMPORT 1.将SAS文件读入SAS—— data sasuser.saslin; set "F:\sas1.sas7bdat"; run; proc contents data=sasuser.saslin; run; 2.将其他形式文件导入成SAS ——PROC IMPORT / 直接读入其他形式文件 proc import datafile = "c:\data\hsb2.sav" out= work.hsb2; run; proc contents data=hsb2; run; SAS导入数据:SAS recognizes the file type to be imported by file extension. 对数据长度的限制 在一些操作环境,SAS假定外部文件的纪录对最长为256(一行数据包括空格等所有字符在内的长度),如果预计读入的纪录长度超过256,可在Infile语句中使用LRECL=n 这个命令。 读入以空格作为分隔符的原始数据 如果原始数据的不同变量之间是以至少一个空格作为分隔符的,那可以直接采用List方法将这些数据读入SAS。 List Input读数据非常方便,但也有很多局限性: (1)不能跳过数据; (2)所有的缺失值必须以点代替 (3)字符型数据必须是不包含空格的,且长度不能超过8; (4)不能直接读入日期型等特殊类型的数据。 程序举例: INPUT Name $ Age Height; 读入按列组织的数据

SAS导入数据

SAS培训第一讲 课程:数据的导入和导出 部门:创新业务部 时间:2014/11/19 内容概要: 1.菜单操作 2.Proc import 3.Infile语句 4.Libname 5.批量导入数据(不讲) 6.数据的导出(直接使用菜单方法或proc export,不讲) 7.各种导入方法的优缺点 数据类型:Excel数据,csv数据(逗号分隔符),Access数据 详细讲解: 1.菜单导入数据(只介绍EXCEL数据导入,其他类似) 1)打开导入数据向导,如下图; 2)选择将要导入的数据类型,然后点击“next”; 3)选择将要导入的数据的物理地址,点击“OK”进入下一步; 4)选择将要导入的table,点击“next”; 5)选择将数据导入哪个逻辑库并填入数据集名称,点击“next”; 6)该步让用户选择是否将菜单操作背后的代码导出,若无必要直接点击“Finish”,完成数 据的导入。 2.Import过程步导入数据 1)Excel表格数据 proc import out = index1 datafile = "C:\Users\Administrator\Desktop\399101.xlsx"

dbms = excel replace; range = "sheet1$"; getnames = NO; run; 参数解释: dbms——规定外部文件格式的标示名 replace——规定替换已存在的文件 range——指定将要导入的数据范围 getnames——规定是否将第一行数据作为变量名 2)csv数据 proc import out = import_csv datafile = "C:\Users\Administrator\Desktop\data_lesson1\鞍山20141112.csv" dbms = csv replace; delimiter = ','; getnames = yes; datarow = 2; guessingrows = 4000; run; 参数解释: dbms——规定外部文件格式的标示名 replace——规定替换已存在的文件 delimiter——规定外部文件分隔符 getnames——规定是否将第一行数据作为变量名 datarow——规定从第几行开始读取数据 guessingrows——规定根据前多少条数据确定变量格式 说明: a)对于文件格式的标示名与源文件格式之间的对应关系参《SAS编程技术教程》 b)一般情况都加上replace,以免重新导入数据时出错,当然也可以不加 c)若文件含分隔符,则必须规定delimiter选项 d)当getnames=yes时,datarow应大于1 e)guessingrows最大取值为4000,若缺省此项,SAS默认将第一条数据的格式作为变 量格式。 对于数据量超过4000条的数据最好不要使用proc import导入数据,有可能会导致字符被截断等情况。接下来介绍的infile方法可以解决这一点。 3)Access数据 proc import out = import_ac table = 'content' dbms = access replace; database = "C:\Users\Administrator\Desktop\data_lesson1\SpiderResult.mdb";

第4章 用编程读入数据建立SAS数据集

第4章用编程读入数据建立sas数据集 §4.1 sas编程基本概念 §4.1 概述 sas语言程序由数据步和过程步组成。 sas语言的基本单位是语句,每个sas语句一般由一个关键字(如data,proc,input,cards,by)开头,包含sas名字、特殊字符、运算符等,以分号结束。 sas关键字是用于sas语句开头的特殊单词,sas语句除了赋值、累加、注释、空语句以外都以关键字开头。 sas名字在sas程序中标识各种sas成分,如变量、数据集、数据库,等等。 数据步和过程步 数据步用来生成数据集(从数据片中或外部数据文件中读取数据)、计算整理数据等。 语法: data 数据集名; .....; run; 过程步:面向SAS数据集,完成某个特定的计算、分析和呈现功能 语法: proc 过程名;

......; run; sas程序的书写规则 sas程序是由一至多个数据步骤(data step)和过程步(Procedure Step)互相交叉组合而形成。 根据各个数据步骤的属性或过程步的功能,来实现sas 数据文件的建立、进行统计分析等。 sas系统的编译方式是以数据步或过程步为一个区块来编译的,语法编译无误便开始执行该数据步或过程步,执行完整一个数据步或过程步区块后便继续处理下一个数据步或过程步。一个区块接一个区块地将所有程序代码编译及执行完后,便完成了该程序的执行。sas程序代码提交出去,便已将程序交由sas系统去完成。 用户必须确定sas系统在log窗口中是否有显示错误的程序代码,分析数据的属性是否正确。 sas的程序代码是自由格式的程序代码,每个语句由关键词开始,以“;”作为一个程序语法的结束; 一行可以含多个程序语句; 一个程序语句也可以分成多行,但必须以空格(只要有一个空格的地方,就可用任意多个空格来替代)为分隔。注:在命令框中键入num即可显示或取消行数。 指定逻辑库名与逻辑文件名

sas函数大全

sas函数大全 一、数学函数 ABS(x) 求x的绝对值。 MAX(x1,x2,…,xn) 求所有自变量中的最大一个。 MIN(x1,x2,…,xn) 求所有自变量中的最小一个。 MOD(x,y) 求x除以y的余数。 SQRT(x) 求x的平方根。 ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。 CEIL(x) 求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。FLOOR(x) 求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。 INT(x) 求x扔掉小数部分后的结果。 FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。 LOG(x) 求x的自然对数。 LOG10(x) 求x的常用对数。 EXP(x) 指数函数。 SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。 ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。 ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。 ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。 SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切 ERF(x) 误差函数 GAMMA(x) 完全函数 此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。 二、数组函数 数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括: DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。 DIM k(x) 求数组x第k维的元素的个数。 LBOUND(x) 求数组x第一维的下界。 HBOUND(x) 求数组x第一维的上界。 LBOUND k(x) 求数组x第 k维的下界。 HBOUND k(x) 求数组x第 k维的上界。 三、字符函数 较重要的字符函数有: TRIM(s) 返回去掉字符串s的尾随空格的结果。 UPCASE(s) 把字符串s中所有小写字母转换为大写字母后的结果。 LOWCASE(s) 把字符串s中所有大写字母转换为小写字母后的结果。 INDEX(s,s1) 查找s1在s中出现的位置。找不到时返回0。 RANK(s) 字符s的ASCII码值。 BYTE(n) 第n个ASCII码值的对应字符。 REPEAT(s,n) 字符表达式s重复n次。 SUBSTR(s,p,n) 从字符串s中的第p个字符开始抽取n个字符长的子串

SAS数据步data step和数据array编程效率

Paper CC-17 Arrays – Data Step Efficiency Harry Droogendyk, Stratia Consulting Inc., Lynden, ON ABSTRACT Arrays are a facility common to many programming languages, useful for programming efficiency. SAS? data step arrays have a number of unique characteristics that make them especially useful in enhancing your coding productivity. This presentation will provide a useful tutorial on the rationale for arrays and their definition and use. INTRODUCTION Most of the row-wise functionality required for data collection, reporting and analysis is handled very efficiently by the various procedures available within SAS. Column-wise processing is a different story. Data may be supplied in forms that require the user to process across the columns within a single row to achieve the desired result. Column-wise processing typically requires the user to employ the power and flexibility of the SAS data step. Even within the SAS data step different methods with varying degrees of coding and execution efficiency can be employed to deal with column-wise processing requirements. Data step arrays are unparalleled in their ability to provide efficient, flexible coding techniques to work with data across columns, e.g. a single row of data containing 12 columns of monthly data. This paper will cover array definition, initialization, use and the efficiencies afforded by their use. DEFINING ARRAYS Array definition in SAS is quite different than most other computer languages. In other languages, arrays are typically a temporary container that holds single or multi-dimensional data that has convenient indexing capabilities which may be used to iterate over the data items within, or to directly reference specific items. SAS’s _temporary_ array structures are most like the definitions found in other languages, but SAS provides so much more array functionality than found in other languages. The basic array definition statement is as follows: ARRAY array_name (n) <$> array-elements <(initial-values)>; - array_name any valid SAS variable name - (n) number of array elements ( optional in some cases ) - $ indicates a character array - length length of each array element ( optional in some cases ) - array-elements _temporary_ or SAS variable name(s) or variable lists ( optional ) - initial-values array initial values SAS arrays must contain either numeric or character data, not a mixture of both. TEMPORARY ARRAY DEFINITION Temporary arrays provide convenient tabular data stores which persist only while the data step is executing. The “variables” created by the temporary array are automatically dropped from the output dataset. Temporary arrays are often used to act as accumulators, store factors etc.. when the items being referenced are not required to be stored with the data. Temporary arrays are automatically retained across data step iterations, i.e. the element values are not set to missing at the top of the data step like most other data step variables. array factors(12,3) _temporary_ ; array desc(12) $15_temporary_ ; The first statement defines a two-dimension numeric array. The second, a 12 element character array, each element 15 bytes in length.

sas常用函数

Sas常用函数(转) 一、数学函数 ABS(x) 求x的绝对值。 MAX(x1,x2,…,xn) 求所有自变量中的最大一个。 MIN(x1,x2,…,xn) 求所有自变量中的最小一个。 MOD(x,y) 求x除以y的余数。 SQRT(x) 求x的平方根。 ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。 CEIL(x) 求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。 FLOOR(x) 求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。 INT(x) 求x扔掉小数部分后的结果。 FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。 LOG(x) 求x的自然对数。 LOG10(x) 求x的常用对数。 EXP(x) 指数函数。 SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。 ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。 ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。 ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。 SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切 ERF(x) 误差函数 GAMMA(x) 完全函数

此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel 函数JBESSEL,修正的Bessel函数IBESSEL,等等。 二、数组函数 数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括: DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。 DIM k(x) 求数组x第k维的元素的个数。 LBOUND(x) 求数组x第一维的下界。 HBOUND(x) 求数组x第一维的上界。 LBOUND k(x) 求数组x第k维的下界。 HBOUND k(x) 求数组x第k维的上界。 三、字符函数 较重要的字符函数有: TRIM(s) 返回去掉字符串s的尾随空格的结果。 UPCASE(s) 把字符串s中所有小写字母转换为大写字母后的结果。 LOWCASE(s) 把字符串s中所有大写字母转换为小写字母后的结果。 INDEX(s,s1) 查找s1在s中出现的位置。找不到时返回0。 RANK(s) 字符s的ASCII码值。 BYTE(n) 第n个ASCII码值的对应字符。 REPEAT(s,n) 字符表达式s重复n次。 SUBSTR(s,p,n) 从字符串s中的第p个字符开始抽取n个字符长的子串 TRANWRD(s,s1,s2) 从字符串s中把所有字符串s1替换成字符串s2后的结果。

SAS中的函数

在学习任何软件的时候,函数都是很重要的学习容,大大方便我们的工作,没事的时候就拿出来看看吧。 一、数学函数 ABS(x) 求x的绝对值。 MAX(x1,x2,…,xn) 求所有自变量中的最大一个。 MIN(x1,x2,…,xn) 求所有自变量中的最小一个。 MOD(x,y) 求x除以y的余数。 SQRT(x) 求x的平方根。 ROUND(x,eps) 求x按照eps指定的精度四舍五入后的结果,比如ROUND(5654.5654,0.01) 结果为5654.57,ROUND(5654.5654,10)结果为5650。 CEIL(x) 求大于等于x的最小整数。当x为整数时就是x本身,否则为x右边最近的整数。 FLOOR(x) 求小于等于x的最大整数。当x为整数时就是x本身,否则为x左边最近的整数。 INT(x) 求x扔掉小数部分后的结果。 FUZZ(x) 当x与其四舍五入整数值相差小于1E-12时取四舍五入。LOG(x) 求x的自然对数。 LOG10(x) 求x的常用对数。 EXP(x) 指数函数。 SIN(x), COS(x), TAN(x) 求x的正弦、余弦、正切函数。

ARSIN(y) 计算函数y=sin(x)在区间的反函数,y取[-1,1]间值。ARCOS(y) 计算函数y=cos(x)在的反函数,y取[-1,1]间值。 ATAN(y) 计算函数y=tan(x)在的反函数,y取间值。 SINH(x), COSH(x), TANH(x) 双曲正弦、余弦、正切 ERF(x) 误差函数 GAMMA(x) 完全函数 此外还有符号函数SIGN,函数一阶导数函数DIGAMMA,二阶导数函数TRIGAMMA ,误差函数余函数ERFC,函数自然对数LGAMMA,ORDINAL函数,AIRY 函数,DAIRY函数,Bessel函数JBESSEL,修正的Bessel函数IBESSEL,等等。 二、数组函数 数组函数计算数组的维数、上下界,有利于写出可移植的程序。数组函数包括: DIM(x) 求数组x第一维的元素的个数(注意当下界为1时元素个数与上界相同,否则元素个数不一定与上界相同)。 DIM k(x) 求数组x第k维的元素的个数。 LBOUND(x) 求数组x第一维的下界。 HBOUND(x) 求数组x第一维的上界。 LBOUND k(x) 求数组x第k维的下界。 HBOUND k(x) 求数组x第k维的上界。 三、字符函数 较重要的字符函数有:

SAS数据的导出和导入

SAS数据导出导入 经常导入和导出的数据格式包括:文本文件(txt格式)、纯数据文件(dat格式)、EXCEL文件(xls格式)、ACCESS文件(mdb格式);程序如下: 一、导入导出文本文件(txt格式)、纯数据文件(dat格式);其实都是导入导出DLM文件(*.*),需要指定分隔符号。如下(以txt为例,dat同样): 1.TAB分割,第一行为变量名 PROC IMPORT OUT= WORK.a DATAFILE= "D:\cha\1.txt" DBMS=TAB REPLACE; GETNAMES=YES; DATAROW=2; RUN; PROC EXPORT DATA= WORK. OUTFILE= "D:\" DBMS=TAB REPLACE; RUN; 2.SPACE分割,第一行为变量名 PROC IMPORT OUT= YANG.WORD DATAFILE= "D:\a\word.txt" DBMS=DLM REPLACE; DELIMITER='20'x; GETNAMES=YES; DATAROW=2; RUN; PROC EXPORT DATA= WORK.AA OUTFILE= "C:\b.txt" DBMS=DLM REPLACE;

DELIMITER='20'x; RUN; 二、导入导出EXCEL文件(xls格式)程序如下: PROC IMPORT OUT= WORK.ALLWORD DATAFILE= "F:\cc.xls" DBMS=EXCEL REPLACE; SHEET="Sheet1$"; GETNAMES=YES; RUN; PROC EXPORT DATA= WORK.A OUTFILE= "D:\export1.xls" DBMS=EXCEL REPLACE; SHEET="nameofsheet"; RUN; 三、导入导出ACCESS文件(mdb格式)程序如下: PROC IMPORT OUT= WORK.aa DATATABLE= "username" DBMS=ACCESS REPLACE; DATABASE="D:\all\userinfo.mdb"; RUN; PROC EXPORT DATA= WORK.A OUTTABLE= "export1" DBMS=ACCESS REPLACE; DATABASE="D:\example.mdb"; *must be an exsited database; RUN;

相关主题