SAS学习笔记1

2.5-2.9

数据读取方式:List input, Column input, Formatted input, Mix input

List input(列表输入、自由格式输入):适合原始数据文件中所有值之间都被至少一个空格分隔开。局限性:你必须读取一条记录中的全部数据,不能跳过不需要的值,任何缺失值都必须用句点标识;字符型数据不能有内嵌的空格,长度不超过8个字符;包括日期或其他需要特殊处理的数据,不适合。  input Name $ Age Height;

 Column input(列输入):适于读取数据文件所有值或表示缺失值的句点之间没有空格(或其他分隔符)的文件,所有值都是字符型或标准数值型。优势:①值之间无须空格;②缺失值可以留空;③字符数据可以内嵌空格(没说数值型可以内嵌空格,估计是不可以吧);④可以跳过不需要的变量。调查数据非常适合列输入进行读取数据。                                                                                      input Name $ 1-10 Age 11-13  Height 14-18;*1-10表示该变量的列范围;

Formatted input(格式化输入 ):最复杂,可以读取诸如日期的特殊数据。 input Name $10.  Age 3.  Height 5.1 Birthdate MMDDYY10.  Acreage COMMA9.  ;

Mix input(混合输入):结合实际同时灵活应用以上三种方式。    input Name $1-22 State $  Acreage COMMA9.  ;


输出格式:字符,数值,日期

字符:Name  $w. Name是名称,w是总长度,  $表示是字符型。例如:Wang $10.

数值:Name  w.d   Name是名称,w是总长度, d是小数位数,例如:Heigh 5.1    Age 3.

日期:Name  w.  例如:Birthdate MMDDYY10.

+1表示跳过一列。

常用输入格式



2.10读取混杂的原始数据

The @‘character’column pointer(列指针)和The colon modifier(冒号修饰符)   和 @n  

     指将指针移到到特定的列,@40 指移到到第40列,@‘Breed:’指某种信息总出现在单词Breed之后,指针移到单词Breed之后。

 input @'Breed:' DogBreed$; *狗品种信息总出现在单词Breed之后,$表示此为字符变量;

 (在变量名长度超过8个字符时可 ,需为字符变量制定输入格式) 

 input @'Breed:' DogBreed$20.;*$20.     SAS连续读取20个字符,无论其中是否含有空格;

  input @'Breed:' DogBreed:$20.;*:$20.  SAS读取到空格或数据行结束为止(最多读取20个字符);


2.11 为每个观测值读取多行原始数据

行指针:斜线(/)和#n。

指示跳到下一个原始数据行; #n 指跳到指定的行,即第n行。  

 input city $ state $

             / NormalH  NormalL

          #3 RecordH RecordL; */告诉SAS在读NormalH 和 NormalL前转到第二行第一列,#n3指转到第三行第一列;

2.12 为每行原始数据读取多个观测值:

Line-hold specifier(行固定标识符):@@

如果每行原始数据有多个观测,可以在input语句结尾处使用@@。 使用了@@,SAS不会为每个观测自动进入原始数据的新一行。

                                     input city $ state $ NormalRain  MeanDaysRain @@;


2.13 读取原始文件的一部分

用@结束input语句,告诉SAS,保留那行原始数据。然后可用IF语句来判断是否是你需要保留的观测数据,如果是,则使用第二个input语句读取变量数据。

input Type $ @;

if Type='surface' Then delete;

input Name $ 9-38 AmTraffic PMTraffic;

2.13 在infile语句中使用选项控制输入

(1)“FFIRSTOBS=  ”告知SAS从第几行开始读取数据。 infile 'C:\Mylib\Allscore.dat' FIRSTOBS=3;

(2)“OBS= ”   告知SAS在哪一行时停止读取。      infile 'C:\Mylib\Allscore.dat' FIRSTOBS=3  obs=5;

(3)"MISSOVER"告知SAS,当一行数据读完的时候不要转到下一行,而是为其余变量分配缺失值。

                           infile 'C:\Mylib\Allscore.dat' MISSOVER; 

 而默认情况下,当SAS读完一行数据后,如果input语句中还有一些变量没有赋值,SAS将转到下一个数据行读取数据。

(4)“TRUNCOVER”告知SAS为变量读取数据,直到遇到了数据行的结尾,或者遇到了在格式或列范围指定的最后一列,二者以先遇到为准。在默认情况下,如果一个变量的字段超出了数据行的结尾,SAS将转到下一行继续读取数据。(数据行结束指实际数据行结束了,变量字段长度是预先设定的变量作用域)

                       infile 'C:\Mylib\Allscore.dat' TRUNCOVER;

 如果数据行在变量作用域开始前就结束了,"MISSOVER" 和  “TRUNCOVER”都会为变量分配缺失值;但如果数据行在变量作用域中间结束时,“TRUNCOVER”将尽量读取可用数据,"MISSOVER" 则直接为变量分配缺失值。

(5)“DELIMITER”“DLM=”选项能够读取其他分隔符的文件。(列表输入可以读取用空格分隔的数据) 。如果分隔符是字符串,用“DLMSTR=”。                                                             

                  infile'C:\Mylib\Allscore.dat'  DLM=',' ; infile 'C:\Mylib\Allscore.dat'  DLM='&' ;

                  infile 'C:\Mylib\Allscore.dat'  DLMSTR='ABC' ;

                 infile 'C:\Mylib\Allscore.dat'  DLM='09'X ;*使用制表符作为分隔符;

(6)“DSD”它忽略用引号括起来的数据值中的分隔符;不会把引号作为数值的一部分读取;把两个连续的分隔符视为缺失值。                                                                                    

                infile 'file-specification' DLM='09'XDSD;*读取一个制表符分隔的ASCII文件;

CSV文件,用逗号作为分隔符,可以用“DSD”选项读取,连续的逗号表示缺失值;如果数据值包含逗号,则数值会被放在引号中。infile 'C:\Mylib\Bands.csv' DLM=',' DSD;

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 204,732评论 6 478
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 87,496评论 2 381
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 151,264评论 0 338
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 54,807评论 1 277
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 63,806评论 5 368
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,675评论 1 281
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,029评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,683评论 0 258
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 41,704评论 1 299
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,666评论 2 321
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,773评论 1 332
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,413评论 4 321
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,016评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 29,978评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,204评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,083评论 2 350
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,503评论 2 343

推荐阅读更多精彩内容

  • 2.12 一行有多个观测值的原始文件读取 当一行出现多个观测值时,可以在input语句结尾加一个停止符号@@ 例子...
    胡阿白阅读 554评论 0 1
  • 2.9 混合读取方式 每种数据读取方式都有其优势,list最简单,column和formatted虽然复杂但是不要...
    胡阿白阅读 270评论 0 1
  • 第二章 将你的数据放入SAS(2.1-2.11) 2.1 将你的数据放入SAS的方法 你可能有各种形式的数据,包括...
    胡阿白阅读 406评论 0 2
  • 官网 中文版本 好的网站 Content-type: text/htmlBASH Section: User ...
    不排版阅读 4,364评论 0 5
  • 变量名 名字的长度要小于等于 32 个字节。(一个字母 1 个字节, 一个汉字 2 个字节)以字母或下划线开头。可...
    ShawnDuan阅读 1,492评论 0 0