SAS学习笔记

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

2023-08-30  本文已影响0人  RSP小白之路

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

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

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

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

infile "file_pathway" options;

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

infile "file_pathway" firstobs = 2;

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

infile "file_pathway" obs = 100;

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

默认情况下,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 . .

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

默认情况下,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直接分配缺失值
上一篇 下一篇

猜你喜欢

热点阅读