SAS学习笔记:读取混合格式的数据

/*******************************************/
/*****************************************
SAS编程2--chap4:3:列指针控制
*****************************************/
data seminar_ratings;
infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\seminar.dat';
input @1 Name $15.  @'Rating:'Rating 1.;
run;
title 'Names and Ratings';
proc print data=seminar_ratings;
run;
title;
/*******************************************/
/*****************************************
SAS编程2--chap4:多个INPUT语句:控制多行记录
*****************************************/
data contacts;
infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\address.dat';
input FullName $30.;
input;
input Address2 $25.;
input Phone $8.;
run;
proc print data=contacts noobs;
run;
/*******************************************/
/*****************************************
SAS编程2--chap4:行指针控制
*****************************************/
data contacts1;
infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\address.dat';
input FullName $30. / /
 Address2 $25. /
 Phone $8.;
run;
proc print data=contacts1 noobs;
run;
/*******************************************/
/*****************************************
SAS编程2--chap4:混合记录模式
*****************************************/
data salesQ1;
infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\sales.dat';
input SaleID $4. @6 Location $3. @;
if Location='USA' then 
input @10 SaleDate mmddyy10. @20 Amount 6.;
else if Location='EUR' then
input @10 SaleDate date9. @20 Amount commax7.;
run;
proc print data=salesQ1 noobs;
run;
/*******************************************/
/*****************************************
SAS编程2--chap4:4每条观测读取多个记录行
*****************************************/
data sales_staff2;
infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\sales2.dat';
input @1 Employee_ID 6. @8 First_Name $12. @21 Last_Name $18.;
input @1 Job_Title $20. @22 Hire_Date mmddyy10. @33 Salary dollar8.;
input @1 Gender $1. @3 Birth_Date mmddyy10. @14 Country $2.;
run;
title 'Australian and US Sales Staff';
proc print data=sales_staff noobs;
var Employee_ID Last_Name Job_Title Hire_Date Salary;
run;
/*******************************************/
/*****************************************
SAS编程2--chap4:5:处理混合类型记录
*****************************************/


data US_Sales AU_Sales;
infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\sales3.dat';
input @1 Employee_ID 6. @8 First_Name $12. 
@21 Last_Name $18. @40 Gender $1. @43 Job_Title $20.;
input  @10 Country $2. @;
if Country='US' then do;
input  @1 Salary dollar8. @13 Birth_Date mmddyy10. @24 Hire_Date mmddyy10.;
output US_Sales;
end;
else if Country='AU'  then do;
input  @1 Salary dollar8.3 @13 Birth_Date ddmmyy10. @24 Hire_Date ddmmyy10.;
output AU_Sales;
end;
drop Country;
run;
title 'US Sales Staff';
proc print data=US_Sales noobs;
var  Employee_ID Last_Name Job_Title Salary Hire_Date ;
run;
title;
title 'Australian Sales Staff';
proc print data=AU_Sales noobs;
var  Employee_ID Last_Name Job_Title Salary Hire_Date ;
run;
title;
/*******************************************/
/*****************************************
SAS编程2--chap4:记录末尾的数据为缺失值:missover
*****************************************/
data contacts;
   length Name $ 20 Phone Mobile $ 14;
   infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\phone.csv' dlm=',' missover;
   input Name $ Phone $ Mobile $;
run;


proc print data=contacts noobs;
run;
/*******************************************/
/*****************************************
SAS编程2--chap4:记录末尾之前含有缺失值:dsd
*****************************************/
data contacts;
   length Name $ 20 Phone Mobile $ 14;
   infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\phone2.csv' dsd;
   input Name $ Phone $ Mobile $;
run;


proc print data=contacts noobs;
run;
/*******************************************/
/*****************************************
SAS编程2--chap4:每条记录含有多条观察值
*****************************************/
data donate07;
   length ID $4;
   infile 'E:\library\sas\SAS基础\SAS编程2:数据处理技术\P2 DATA\prg2\charity.dat';
   input ID $ Amount @@;
run;


proc print data=donate07 noobs;

run;

备注:单尾符@和双尾符@的区别:

@:固定原始记录行直到-------1)一个无单尾符@的INPUT语句 或  2)数据步的下一次循环

@@:固定原始记录行于input buffer 内直到SAS读取到记录行的末尾


@和@@是互斥的,它们不能同时使用。若二者同时用于一个INPUT语句中,后面定义 的那个选项会起作用。

MISSOVER选项对@@无效。



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值