美文网首页SAS学习笔记
《The Little SAS Book》学习笔记---Chap

《The Little SAS Book》学习笔记---Chap

作者: RSP小白之路 | 来源:发表于2023-08-30 09:37 被阅读0次

在使用SAS进行数据处理分析之前,首先需要获取数据。

读入外部的分隔符数据文件进SAS是常用的一种方式。一般使用data步中的infile语句或者proc import过程步。

这里先学习infile语句的方式,介绍几个infile语句中的选项

infile语句放在datainput语句的前面,形式一般为:

infile "file_pathway" options;

file_pathway是文件的完整路径,options是一些选项设置,下面我们挑选几个常用的进行说明。

  • firstobs=
    firstobs=告知SAS从第几行开始读取数据。例如,有些外部文件第一行是列名,但我们不想读入,从第2行开始读入:
infile "file_pathway" firstobs = 2;
  • obs=

当我们想读入部分数据,可以使用obs=选项,它告知SAS读到哪一行停止。例如,obs=100表示读取100行数据。

infile "file_pathway" obs = 100;

obs=可以和firstobs=配合读取文件的中间数据。

  • MISSOVER

默认情况下,SAS读取完一行,如果还有变量没有赋值,会转到下一行继续读取。MISSOVER告知SAS,不要转到下一行,剩余未赋值变量分配缺失值。

data hahaha;
    infile cards missover;
    input var $ value1 value2 value3 ;
cards;
apple  1324 3556 98
banana 23 11 
orange 34
;
run;

proc print data =hahaha noobs;title; run;

打印结果:

var value1 value2 value3
apple 1324 3556 98
banana 23 11 .
orange 34 . .
  • TRUNCOVER

适用于列输入(指定变量起始结束列数)和格式化输入方式读取数据时,一些数据行比其他行短的情况。

默认情况下,SAS会转到下一行继续为这个变量读取数据。

TRUNCOVER选项告诉SAS,读取数据时,直到行结尾时或者格式或者列指定范围最后1列,停止读取。

使用书中例子进行说明:

data fafafafa;
    infile cards truncover;
    input name $ 1-15  number 16-19 street $ 22-37  ;
cards;
John Garcia     114  Maple Ave.
Sylvia Chung   1302  Washington Drive
Martha Newton    45  S.E. 14th St.
;
run;
proc print data =fafafafa noobs;title; run;

打印结果:

name number street
John Garcia 114 Maple Ave.
Sylvia Chung 1302 Washington Drive
Martha Newton 45 S.E. 14th St.

如果没有truncover选项,第一个和第三个观测将去下一行读取数据。

  • TRUNCOVER和MISSOVER
  • 如果原始数据行在变量作用域开始前结束,两者都为变量分配缺失值
  • 如果原始数据行在变量作用域中间结束TRUNCOVER尽量读取可用数据MISSOVER直接分配缺失值

相关文章

网友评论

    本文标题:《The Little SAS Book》学习笔记---Chap

    本文链接:https://www.haomeiwen.com/subject/xeenpdtx.html