SAS - อ่านข้อมูลดิบ
SAS สามารถอ่านข้อมูลจากแหล่งต่างๆซึ่งรวมถึงไฟล์หลายรูปแบบ รูปแบบไฟล์ที่ใช้ในสภาพแวดล้อม SAS จะกล่าวถึงด้านล่าง
- ชุดข้อมูล ASCII (ข้อความ)
- ข้อมูลที่คั่น
- ข้อมูล Excel
- ข้อมูลตามลำดับชั้น
การอ่านชุดข้อมูล ASCII (ข้อความ)
นี่คือไฟล์ที่มีข้อมูลในรูปแบบข้อความ โดยปกติข้อมูลจะถูกคั่นด้วยช่องว่าง แต่อาจมีตัวคั่นประเภทต่างๆที่ SAS สามารถจัดการได้ ลองพิจารณาไฟล์ ASCII ที่มีข้อมูลพนักงาน เราอ่านไฟล์นี้โดยใช้ไฟล์Infile คำสั่งที่มีอยู่ใน SAS
ตัวอย่าง
ในตัวอย่างด้านล่างเราอ่านไฟล์ข้อมูลที่ชื่อ emp_data.txt จากสภาพแวดล้อมในท้องถิ่น
data TEMP;
infile
'/folders/myfolders/sasuser.v94/TutorialsPoint/emp_data.txt';
input empID empName $ Salary Dept $ DOJ date9. ;
format DOJ date9.;
run;
PROC PRINT DATA = TEMP;
RUN;
เมื่อดำเนินการโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้
การอ่านข้อมูลที่คั่น
ไฟล์เหล่านี้คือไฟล์ข้อมูลที่ค่าคอลัมน์ถูกคั่นด้วยอักขระคั่นเช่นลูกน้ำหรือไปป์ไลน์เป็นต้นในกรณีนี้เราใช้ dlm ตัวเลือกใน infile คำให้การ.
ตัวอย่าง
ในตัวอย่างด้านล่างเราอ่านไฟล์ข้อมูลชื่อ emp.csv จากสภาพแวดล้อมภายในเครื่อง
data TEMP;
infile
'/folders/myfolders/sasuser.v94/TutorialsPoint/emp.csv' dlm=",";
input empID empName $ Salary Dept $ DOJ date9. ;
format DOJ date9.;
run;
PROC PRINT DATA = TEMP;
RUN;
เมื่อดำเนินการโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้
การอ่านข้อมูล Excel
SAS สามารถอ่านไฟล์ excel ได้โดยตรงโดยใช้สิ่งอำนวยความสะดวกในการนำเข้า ดังที่เห็นในบทชุดข้อมูล SAS สามารถจัดการไฟล์ได้หลากหลายประเภทรวมถึง MS excel สมมติว่าไฟล์ emp.xls พร้อมใช้งานในระบบ SAS
ตัวอย่าง
FILENAME REFFILE
"/folders/myfolders/TutorialsPoint/emp.xls"
TERMSTR = CR;
PROC IMPORT DATAFILE = REFFILE
DBMS = XLS
OUT = WORK.IMPORT;
GETNAMES = YES;
RUN;
PROC PRINT DATA = WORK.IMPORT RUN;
โค้ดด้านบนอ่านข้อมูลจากไฟล์ excel และให้ผลลัพธ์เหมือนกับไฟล์สองประเภทข้างต้น
การอ่านไฟล์ลำดับชั้น
ในไฟล์เหล่านี้ข้อมูลจะแสดงในรูปแบบลำดับชั้น สำหรับการสังเกตที่ระบุมีบันทึกส่วนหัวด้านล่างซึ่งมีการกล่าวถึงบันทึกรายละเอียดมากมาย จำนวนบันทึกรายละเอียดอาจแตกต่างกันไปในแต่ละข้อสังเกต ด้านล่างนี้คือภาพประกอบของไฟล์ลำดับชั้น
ในไฟล์ด้านล่างนี้จะมีการระบุรายละเอียดของพนักงานแต่ละคนในแต่ละแผนกไว้ ระเบียนแรกคือระเบียนส่วนหัวที่กล่าวถึงแผนกและระเบียนถัดไปไม่กี่ระเบียนที่เริ่มต้นด้วย DTLS คือระเบียนรายละเอียด
DEPT:IT
DTLS:1:Rick:623
DTLS:3:Mike:611
DTLS:6:Tusar:578
DEPT:OPS
DTLS:7:Pranab:632
DTLS:2:Dan:452
DEPT:HR
DTLS:4:Ryan:487
DTLS:2:Siyona:452
ตัวอย่าง
ในการอ่านไฟล์ลำดับชั้นเราใช้โค้ดด้านล่างซึ่งเราระบุเร็กคอร์ดส่วนหัวด้วยคำสั่ง IF และใช้ do loop เพื่อประมวลผลบันทึกรายละเอียด
data employees(drop = Type);
length Type $ 3 Department
empID $ 3 empName $ 10 Empsal 3 ;
retain Department;
infile
'/folders/myfolders/TutorialsPoint/empdtls.txt' dlm = ':';
input Type $ @;
if Type = 'DEP' then
input Department $;
else do;
input empID empName $ Empsal ;
output;
end;
run;
PROC PRINT DATA = employees;
RUN;
เมื่อดำเนินการโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้