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;

เมื่อดำเนินการโค้ดด้านบนเราจะได้ผลลัพธ์ดังต่อไปนี้