/*******************************************/
/*****************************************
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;
/*****************************************
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选项对@@无效。