ฝึกเขียน SAS วิเคราะห์ข้อมูลฟรีด้วย SAS On Demand

ฝึกเขียน SAS วิเคราะห์ข้อมูลฟรีด้วย SAS On Demand

SAS คืออะไร ใช้ทำอะไรได้บ้าง เรียนฟรีได้ไหม บทความนี้มีคำตอบครับ 😁 / ไม่ได้เขียนบทความนานเลยแอด เปลี่ยนจากเขียน open-source มาเป็น proprietary software กันบ้าง 555+

Table of Contents

What is SAS?

SAS ย่อมาจาก Statistical Analysis Software เป็นซอฟต์แวร์สำหรับงานด้านสถิติ พัฒนาโดย SAS Institute เขียนขึ้นมาจากภาษา C เวอร์ชันแรกออกมาในปี 1972 (50 ปีแล้ว)

เวอร์ชัน 9.4M7 (stable release) ตัวล่าสุดออกมาเมื่อเดือนสิงหาคม 2020 ทุกวันนี้ SAS สามารถทำ data management, advanced analytics, machine learning & AI

Coursera – Getting Started with SAS Programming

ตัวอย่างบริษัทใช้ SAS ในระดับ Global (อ้างอิงจากเว็บไซต์ SAS Customers Y2021)

  • Nestle
  • Honda
  • AIA
  • Standard Chartered
  • WWF
  • Office Depot
  • Telenor (dtac Thailand)
  • US Universities

ส่วนตัวแอดคิดว่า SAS OnDemand เป็น Statistical Software ที่ดีเลย เหมาะสำหรับใช้เรียนรู้พวก concepts ต่างๆ เป็นอีกหนึ่งตัวเลือกนอกจาก IBM SPSS และ open-source R

จุดแข็งของ SAS คือ Base SAS และ SAS/STAT และ Enterprise Miner สำหรับเทรนโมเดล machine learning/ data mining กับข้อมูลขนาดใหญ่ในบริษัท

ในประเทศไทย ธนาคารพาณิชย์ บริษัทประกัน และโทรคมนาคมหลายๆที่ก็ยังใช้ SAS กันอยู่ ต่างประเทศบอกว่า ยังใช้เวลาอีกนาน กว่าที่จะเปลี่ยนมาเป็น open-source ได้ 100%

เนื้อหาในบทความนี้ครอบคลุมบทเรียน Week 1-2 ของ Getting Started with SAS Programming เรียนฟรีบน coursera (แอดเลยลองเรียนเล่นๆ สนุกเฉย 🤣 555+)

📑 Fun Read – Why do people still use SAS? (Quora)

Free SAS OnDemand

SAS Studio (OnDemand – Web Browser)

สำหรับเพื่อนๆที่อยากเริ่มเรียน SAS สามารถสมัครใช้ SAS OnDemand ฟรี เป็น cloud-based service ล็อกอินเข้าใช้งานผ่าน web browser ไม่ต้อง install ให้ยุ่งยาก

Standard Process

การทำงานใน SAS จะแบ่งออกเป็น 5 ขั้นตอน เริ่มตั้งแต่การ Access data (โหลดข้อมูลเข้า SAS) เตรียมข้อมูล วิเคราะห์ และอธิบายผลให้ stakeholders เข้าใจ

  1. Access data
  2. Explore data
  3. Prepare data
  4. Analyze and Report on data
  5. Export results

SAS คือ software ที่ทำงาน data science ได้ตั้งแต่ต้นจนจบเลย (พร้อม plugins/ features เสริมมากมาย แต่ตอนใช้จริงต้องเสียเงินเพิ่ม ปีนึงมีเป็นล้านแน่นอน เย้ย 555+)

Note – SAS เป็น proprietary software (เสียเงินเพื่อใช้งาน) จะแตกต่างกับ Python, R ที่เป็น open-source ใช้งานฟรี ดัดแปลง พัฒนาต่อ หรือนำไปใช้ในเชิง commercial ก็ได้

SAS Syntax

SAS Syntax จะมีอยู่สองส่วนหลักๆ คือ

  • DATA
  • PROC (ย่อมาจาก procedure)
/* step 1 */
data myclass;
  set sashelp.class;
run;

/* step 2 */
proc print data=myclass;
run;

DATA ใช้โหลดและเตรียม data สร้าง SAS Tables สำหรับการทำ analysis ส่วน PROC หรือ procedure ใช้ประมวลและสรุปผลข้อมูล สร้างโมเดลต่างๆ generate output เป็นต้น

SAS มีหลายพัน PROC commands เพื่อวิเคราะห์ข้อมูล

ในตัวอย่าง code ด้านบนเขียนคำสั่ง 2 steps (DATA step >> PROC step) ภายในแต่ละ step จะมี statement และทุก statement ต้องปิดท้ายด้วย semicolon ;

Note – SAS เป็นภาษาแบบ case insensitive จะพิมพ์ว่า DATA myclass; หรือ data myclass; ก็รันได้เหมือนกัน (ยกเว้นเวลาเขียน string ใน double quote “USA” <> “usa”)

Global Statements

นอกจาก DATA, PROC steps ใน SAS code สามารถเขียน GLOBAL statements เพื่อปรับ options ต่างๆของ SAS session นั้นๆที่เราทำงานอยู่ ตัวอย่างเช่น

  • TITLE …;
  • OPTIONS …;
  • LIBNAME …;

Note – Global statements ไม่ต้องเขียน run statement ต่อท้าย

Comment

  • Single line ใช้ * ... ;
  • Multiple line ใช้ /* ... */

SAS มี shortcut ctrl+/ เพื่อใช้ comment code เหมือน IDE อื่นๆ อันนี้สะดวกดี ตัวอย่าง code นี้เราสร้าง new data ชื่อว่า under13 โดย copy มาจาก sashelp.class และกรองเฉพาะ records ที่มี Age < 13

/* students under 13 yo */
data under13;
  set sashelp.class;
  where Age<13;
  *drop Height Weight;
run;

Types of Data

SAS สามารถทำงานได้กับข้อมูลหลายประเภททั้งแบบที่มีโครงสร้าง และไม่มีโครงสร้าง (รวมไปถึง semi-structured data อย่าง JSON, XML, TXT)

  • Structured data
  • Unstructured data – no defined columns

ในบทความนี้ เราจะโฟกัสที่ structured data เป็นหลัก

เขียน SAS Syntax บน SAS Studio

SAS Table คือ dataset ที่เราสามารถเรียกใช้ใน SAS จะมีนามสกุลไฟล์ .sas7bdat ให้นึกภาพตารางข้อมูลทั่วไปเหมือนที่เปิดในMS Excel หรือ SQL database

  • Column => SAS เรียกว่า descriptor
  • Data

SAS column ต้องมี 3 attributes (required): Name, Type, Length ชื่อคอลัมน์ขึ้นต้นด้วยตัวอักษรหรือ _ ความยาว 1-32 ตัวอักษร สามารถใช้ได้ทั้ง upper, lower, mixed cases แต่ห้ามขึ้นต้นด้วยตัวเลข (อันนี้ใช้กฎเหมือนกับภาษา programming อื่นๆ)

เราสามารถเรียกดูข้อมูล (metadata) ของแต่ละคอลัมน์ได้ด้วยคำสั่ง PROC CONTENTS

proc contents data=myclass;
run;
SAS-PROC-CONTENTS
PROC CONTENTS Results

SAS Library

Global Statement – LIBNAME ใช้ในการสร้าง data folder สำหรับทำงานใน SAS อ้างอิงจากคอร์สเรียน SAS/ Coursera => “You can think of a SAS library as a collection of data files that are the same types and in the same location”

LIBNAME out "/home/u50300387/sasuser.v94/output";
DATA out.class_copy2;
  SET sashelp.class;
RUN;

Import Data

เราสามารถ import data เข้าสู่ SAS ได้หลายวิธี ในตัวอย่างนี้เรากำหนด Global Statement – OPTIONS validvarname=v7; โดย v7 คือรูปแบบการตั้งชื่อคอลัมน์ในตารางของเราเป็นแบบ snake case (อ้างอิงจาก SAS 7) เช่น First_Name, Last_Name เป็นต้น

/* traditional SAS naming rule v7 */
OPTIONS validvarname=v7;

libname xlstorm xlsx
"/home/u50300387/sasuser.v94/EPG1V2/data/storm.xlsx";

proc contents data=xlstorm.storm_summary;
run;

proc print data=xlstorm.storm_summary;
run;

libname xlstorm clear;

Note – บรรทัดสุดท้ายเราใช้ LIBNAME lib_name CLEAR; เป็น good practice เพื่อเคลียร์ lib_name หรือปิด connection กับ data sources ของเรา (make it inactive)

XLSTORM Table

วิธีที่สองในการ import data คือใช้คำสั่ง PROC IMPORT … โดยพารามิเตอร์ dbms ใช้กำหนดประเภทของไฟล์ต่างๆ เช่น Excel (xlsx) หรือ Delimited file format (dlm)

proc import datafile="path/filname.xlsx"
  dbms=xlsx
  out=output-table;
  /* default to first sheet */
  sheet=sheet-name; 
run;

Export Data

😁 มี import ก็ต้องมี export

SAS ใช้คำสั่ง PROC EXPORT เพื่อส่งออกข้อมูลไปที่ใช้ในโปรแกรมอื่นๆ กำหนด path ที่ outfile เลือกประเภทข้อมูลที่ dbms และก็ run; ได้เลย

proc export data=sashelp.cars
     /* full path to save exported data */
     outfile="C:/workshop/output/cars.txt"
     /* how to format the output */
     dbms=tab replace; 
run;

Syntax Errors

SAS มีหน้า LOG ไว้ให้เราดู Log messages หลังจากโปรแกรมรันคำสั่ง DATA, PROC ถ้ามี warnings หรือ errors เราสามารถรีวิวได้สะดวกมาก (ปกติมันจะบอกว่าเราเขียนผิดตรงไหน และจะแก้ error ได้ยังไง)

สาเหตุของการเกิด errors หรือ bugs ในโปรแกรม ส่วนใหญ่จะเขียน syntax ผิด หรือสะกดคำสั่งผิด – SAS มีความยืดหยุ่นพอสมควร ถ้าเราสะกด DATA เป็น DAAT บางทีโปรแกรมก็รันผ่าน (แต่จะมีขึ้นแจ้งเตือนในหน้า LOG)

  • Misspelled keywords
  • Unmatched quotation marks
  • missing semicolon
  • Invalid options

Note – เรียน programming ยังไงก็หนี errors ไม่พ้น => mindset ของเราคืออย่ากลัว error ยิ่งเจอ errors/ bugs บ่อยๆ เรายิ่งเรียนรู้ได้มากขึ้น 😁 (Learn from failure)

SAS Courses on Coursera

สำหรับเพื่อนๆที่ต้องใช้ SAS ในที่ทำงาน หรืออยากเรียนรู้ไว้เล่นๆ (แบบแอด 555+) ลองมาดูคอร์สฟรี SAS Programming ได้บน Coursera เลยครับ มีวิชาน่าสนใจหลายตัวเลย => เรียนฟรีทุกวิชา หรือจะอัพเกรดเพื่อรับ digital certificate ก็ได้ เฉลี่ยเดือนละ 39-49 USD

เรียนฟรี SAS programming บน Coursera
  • SAS Programmer
  • SAS Advanced Programmer
  • SAS Statistical Business Analyst
  • SAS Visual Business Analytics

เรียนให้สนุกครับทุกคน มีคอร์สอะไรดีๆมาป้ายยาแอดบ้างนะครับ Happy Learning!

PS. SAS มีโปรแกรม Certified Data Scientist ครอบคลุมเรื่อง Data curation, AI & ML, Advanced Analytics เผื่อใครอยากสะสม certificates ไว้สมัครงาน ลองดูได้นะครับ