Upload
others
View
4
Download
0
Embed Size (px)
Citation preview
11 November 2013
วชา 316 441 Statistical Data Processing
อาจารยผสอน รศ.วชดา ไชยศวามงคล
กลมท 2 เรอง ตวแปร SAS ( SAS Variables )
ประเดนทนำาเสนอมดงน
1. นยามตวแปร SAS ( Definition of SAS Variables )2. คณลกษณะตวแปร SAS ( SAS Variable Attributes )3. วธการสรางตวแปร (Ways to Create Variables)4. การแปลงชนดตวแปร (Variable Type Conversions)5. การจดตำาแหนงของคาตวแปร ( Aligning Variable Values )6. ตวแปรอตโนมต ( Automatic Variables )7. รายการตวแปร SAS ( SAS Variable Lists )8. ก า ร เ ล อ น ก า ร ร ก ษ า แ ล ะ ก า ร เ ป ล ย น ช อ
ตวแปร( Dropping,Keeping,and Renaming Variables )9. ค ว า ม แ ม น ย ำา ข อ ง ต ว แ ป ร ใ น โ ป ร แ ก ร ม SAS ( Numeric
Precision in SAS Software )
1.นยามตวแปร SAS ( Definition of SAS Variables ) ตวแปร
คอ ตวแปรทสรางในโปรแกรมจดเกบ และใชตวอกษร และคาตวเลขไดตวแปรมคณลกษณะ ชอและชนด ทชวยใหสามารถระบได และสามารถกำาหนดวธการได
ตวแปรตวอกษร
21 November 2013
เปนตวแปรชนดตวอกษรทประกอบดวยตวอกษร ตวเลข 0 ถง 9 และอกขระพเศษอน ๆ
ตวแปรทเปนตวเลข
เปนตวแปรชนดตวเลขทเกบเปนตวเลขทศนยม รวมทงวน และเวลา
ความแมนยำาของตวเลขหมายถงระดบของความถกตองของตวแปรตวเลขทถกเกบไวใน
ระบบปฏบตการ
2.คณลกษณะตวแปร SAS( SAS Variable Attributes )
ตวแปร SAS มคณลกษณะทอยในตารางตอไปน :
คณลกษณะของตวแปร
คณลกษณะของตวแปร
คาทเปนไปได คาเรมตน
Name ชอ SAS ถกตอง ดกฎ สำาหรบคำาและชอในภาษาของ SAS
ไมม
Type ตวเลขและตวอกษร ตวเลขLength ไบตท 2 ถง 8
1-32,767 ไ บ ต ส ำา ห ร บ ต วอกษร
8 ไบตสำาหรบตวเลขและตวอกษร
Format ด Formats and Informats
BEST12 ส ำา ห ร บตวเลข
31 November 2013
$w. ส ำา ห ร บ ต วอกษร
Informat ด Formats and Informats
w.d สำาหรบตวเลข$w.ส ำา ห ร บ ต วอกษร
Label ถง 256 ตวอกษร ไมมPosition in observation
1- n ไมม
Index type NONE, SIMPLE, COMPOSITE, or BOTH
ไมม
1 ถากำาหนดไมชดเจน จะกำาหนดชนดและความยาวของตวแปร โดยทเหตการณแรกใน DATA step.2 ความยาวตำาสดคอ 2 ไบตในบางการปฏบตงาน ,จำานวนไบตท 3 ในการปฏบตงานผอนดเอกสารประกอบของ SAS ของสภาพแวดลอมใน การปฏบตงาน
หมายเหต : เร มตนกบ SAS 9.1 จำานวนของตวแปรไดมากกวา 32,767 จำานวนสงสดจะขนอยกบสภาพแวดลอมของคณและคณลกษณะของแฟม
คณสามารถใช CONTENTS procedure หรอฟงกชนทระบชอไวในขอกำาหนดดงตอไปน เพอดขอมลเกยวกบคณลกษณะของตวแปร :
41 November 2013
Name
ระบตวแปร ชอตวแปรตองสอดคลองกบกฎการตงชอของ SAS ชอ SAS ยาวไดถง 32 ตวอกษร ตวอกษรตวแรกตองเปนตวอกษร (A, B, C,..., Z) หรอเนน (_), ตวเลข (0-9) หรอขด หมายเหตวาไมสามารถวางเปลา ตวแปรกรณทผสมได ดกฎสำาหรบคำาและชอในภาษา SAS สำาหรบราย ละเอยดเพมเตมเกยวกบตวแปรกรณผสม
ชอ _N_, _ERROR_, _FILE_, _INFILE_, _MSG_, _IORC_ และ _CMD_ ทสงวนไวส ำาหรบตวแปรทสรางขนโดยอตโนมตส ำาหรบ DATA step. หมายเหตวา SAS ผลตภณฑใชชอตวแปรทเร มตน และจบ ดวยการขดเสนใต ขอแนะนำาวา คณไมไดใชชอทเรมตน และจบ ดวยตวอกษรขดลางในโปรแกรมประยกตของคณเอง ดตวแปรอตโนมตสำาหรบขอมลเพมเตม
ก า ร ก ำา ห น ด ค า ข อ ง ค ณ ล ก ษ ณ ะ น ใ ช ฟ ง ก ช น VNAME ห ร อ VARNAMEห ม า ย เ ห ต : ก ฎ ส ำา ห ร บ ช อ ต ว แ ป ร ท อ ธ บ า ย ไ ว ใ น ส ว น น ใ ช เ ม อ ก า ร VALIDVARNAME = ระบบตวเลอกถกตงคาเปน VALIDVARNAME = V7 ซงเปนการตงคาเร มตน กฎอน ๆ ใชเมอตวเลอกนจะกำาหนดแตกตางกน ดกฎสำาหรบคำาและชอในภาษา SAS สำาหรบขอมลเพมเตม
Type
ระบตวแปรเปนตวเลขหรอตวอกษร ใน DATA step ตวแปรจะสรปใหเปนตวเลขเวนแตระบตวอกษรคาตวเลขแทนตวเลข สามารถอานไดในหลาย
51 November 2013
วธ และเกบไวในรปทศนยม คาสามารถประกอบดวยตวอกษร ตวเลข และอกขระพเศษ และสามารถเปน 1 ตวอกษรยาว 32,767
การกำาหนดคาของคณลกษณะน ใชฟงกชน VARTYPE หรอ VTYPE
Length
จำานวนไบตท ใชเก บคาของตวแปรแตละชดขอมลแบบ SAS คณสามารถใชคำาสง LENGTH เพอตงคาความยาวของตวแปรทงตวเลข และตวอกษร ความยาวตวแปรทระบไวในคำาสง LENGTH มผลตอความยาวของตวแปรตวเลขใน output data set ในระหวางการประมวลผล ตวแปรตวเลขทงหมดมจ ำานวน 8 ความยาวของตวแปรตวอกษรทระบในค ำาสง LENGTH มผลตอความยาวระหวางประมวลผลและความยาวใน output data set
ในคำาสง INPUT คณสามารถกำาหนดความยาวไมใชระยะเร มตนให ตวแปรตวอกษร นอกจากนคณยงสามารถกำาหนดความยาวของตวแปรในคำาสง ATTRIB ตวแปรทปรากฏเปนครงแรกทางดานซายของคำาสงการกำาหนด มความยาวเปนเหมอนกบทางดานขวาของคำาสงการกำาหนด
การก ำาหนดค าของคณล กษณะน ใช ฟ งก ช น VLENGTH หรอ VARLEN
Format
61 November 2013
อางถงคำาสงทใช SAS เมอพมพคาตวแปร ถาไมมรปแบบระบ รปแบบเรมตนคอ BEST12 สำาหรบตวแปรตวเลข และ $w. สำาหรบตวแปรตวอกษร คณสามารถกำาหนดรปแบบของ SAS กบตวแปร FORMAT หรอ ATTRIB คณสามารถใชกระบวนการ FORMAT เพอสรางรปแบบของคณเองสำาหรบตวแปร
การก ำาหนดค าของคณล กษณะน ใช ฟ งก ช น VFORMAT หรอ VARFMT
Informat
อางถงค ำาส งท ใช SAS เม ออานคาขอมล ถ า informat ไมได ระบ informat เร มตนเปน w.d สำาหรบตวแปรตวเลข และ $w. สำาหรบตวแปรต วอ กษร คณสามารถก ำาหนด SAS informats ก บต วแปรในค ำาส ง ATTRIB หรอ INFORMAT คณสามารถใชกระบวนการสราง FORMAT ของคณเอง สำาหรบตวแปร informat
การกำาหนดคาของคณลกษณะน ใชฟงกชน VINFORMAT หรอ VARINFMT
Label
หมายถง สญลกษณอธบายไดยาวถง 256 อกขระ ซ งสญลกษณตวแปร สามารถพมพ โดยบางขนตอนของ SAS ใชในการเขยนรายงาน คณสามารถกำาหนดชอตวแปรดวยคำาสง LABEL หรอ ATTRIB
ก า ร ก ำา ห น ด ค า ข อ ง ค ณ ล ก ษ ณ ะ น ใ ช ฟ ง ก ช น VLABEL ห ร อ VARLABEL
71 November 2013
Position in observation
จะถกกำาหนด โดยสงใหมการกำาหนดตวแปรใน DATA step คณสามารถคนหาตำาแหนงของตวแปรในขอสงเกตของชดขอมล SAS โดยดำาเนนการเนอหา คณลกษณะนโดยทวไปไมมความสำาคญใน DATA step ยกเวนในรายการตวแปร ตอไปน :
var rent-phone;ด SAS Variable Lists สำาหรบขอมลเพมเตม
ตำาแหนงของตวแปรในชดขอมล SAS สงผลกระทบตอคำาส งทจะปรากฏในผลลพธของกระบวนงาน SAS เวนแตวาคณควบคมใบสงภายในโปรแกรมของคณ เชน กบคำาสง VAR
การกำาหนดคาของคณลกษณะน ใชฟงกชน VARNUM
ในกำาหนดคาของคณลกษณะน ใชตวเลอก OUT = กบเนอหาขนตอนออกเปนการสรางชดขอมล ตวแปร IDXUSAGE ในชดขอมลผลลพธประกอบดวยคาตอไปนสำาหรบแตละตวแปรอยางใดอยางหนง :
คาดชนชนดคณลกษณะ
คา คำาจำากดความNONE ตวแปรไมมการทำาดชนSIMPLE ตวแปรเปนสวนหนงของดชนไดCOMPOSITE ต ว แ ป ร เ ป น ส ว น ห น ง อ ย า ง น อ ย ห น ง ด ช น
COMPOSITEBOTH ตวแปรเปนสวนหนงของดชนอยางงายและดชน
COMPOSITE
81 November 2013
3.วธการสรางตวแปร ( Ways to Create Variables )
ภาพรวม
คณสามารถสรางตวแปรใหมใน DATA Step ไดตามขนตอนดงน
ใชคำาสง Assigment อานขอมลดวยคำาสง INPUT ในขนตอน DATA step ระบตวแปรใหมใน FORMAT หรอคำาสง INFORMAT ระบตวแปรใหมในคำาสง LENGTH ระบตวแปรใหมในคำาสง ATTRIB
หมายเหต: นอกจากนคณยงสามารถสรางตวแปร ดวยฟงกชน FGET ด SAS ภาษาอางอง: พจนานกรมสำาหรบขอมลเพมเตม
3.1 การใชคำาสง Assignment ใน DATA Step คณสามารถสรางตวแปรใหม และกำาหนดใชเปนครงแรกทางดานซายของคำาส ง Assignment SAS กำาหนดความยาวของตวแปรจากเหตการณทแรกใน DATA Step ตวแปรใหมไดรบชนดและความยาวเดยวกนกบนพจนทางดานขวาของคำาสง assignment เมอชนดและความยาวของตวแปรไมชดเจนตง SAS ใหตวแปรชนดเรมตนและความยาวตามทแสดงในตวอยางในตารางตอไปน
91 November 2013
ผลลพธเมอตงความยาวและชนดตวแปรไมชดเจน
นพจน ตวอยาง ชนดของ ผลลพธของ X
ความยาวผลของ X
อธบาย
ตวแปรทเปนตวเลข
ระยะท 4x =a;
ตวแปรทเปนตวเลข
8 เรมตนตวเลขความยาว 8
ไบตตวแปรอกขระ
ความยาว a $ 4x =a;
ตวแปรตวอกขระ
4 ความยาวของตวแปรตน
อกขระสญพจน
x = 'ABC'x = 'ABCDE'
ตวแปรตวอกขระ
3 ความยาวของ ตวอกษรทพบ
ในขนแรกเรยงตอกนของตวแปร
ความยาว a $ 4b $ 6c $ 2
x = a||b||c
ตวแปรตวอกขระ
12 ผลรวมของความยาวของ
ตวแปรทงหมด
เรยงตอกนของตวแปรและตวอกษร
ความยาว a $ 4x = a||'แมว ';
x =
ตวแปรตวอกขระ
7 ผลรวมของความยาวของตวแปรและตว
10 1 November 2013
a||'CATNIP'; อกษรทพบในคำาส
ง assignment
ถาตวแปรปรากฏขนเปนครงแรกทางดานขวาของคำาสง assignment SAS ถอวา เปนตวแปรตวเลข และคาของหายถาคำาสงไมตอใหมนคา SAS พมพบนทกยอในบนทกวาตวแปรไม
หมายเหต: คำาสง A RETAIN ใชงานตวแปร และสามารถกำาหนดคาเร มตน แมวาคำาสง RETAIN แสดงหลงจากคำาสง assignment
3.2 อานขอมล ดวยคำาสงทปอนใน DATA Step เมอคณอานขอมลดบใน SAS โดยใชคำาสง INPUT กำาหนดตวแปรตามตำาแหนงในขอมลดบ คณสามารถใชหนงในวธตอไปนเปนคำาสง INPUT ใหขอมล SAS เกยวกบวธการจดระเบยบขอมลดบ:
ปอนขอมลคอลมน ปอนรายการ (ธรรมดา หรอ ปรบเปลยน) รปแบบการปอนขอมล ปอนชอ
ด SAS ภาษาอางอง: พจนานกรมสำาหรบขอมลเพมเตมเกยวกบการใชแตละวธ
11 1 November 2013
ตวอยางตอไปนใชปอนขอมลรายการเรองการสรางชดขอมล SAS ชอ GEMS และกำาหนดตวแปรทสตามขอมลทให:
3.3 ระบตวแปรใหมในรปแบบหรอคำาสง INFORMATคณสามารถสรางตวแปร และระบรปแบบหรอรายละเอยดของรปแบบหรอคำาสง INFORMAT ตวอยาง คำาสงรปแบบตอไปนสรางตวแปรชอ Sale_Price มรปแบบของ 6.2 ในชดขอมลใหมทชอ SALES:
12 1 November 2013
SAS สรางตวแปรตวเลขกบชอ Sale_Price และมความยาว 8
ด SAS ภาษาอางอง: พจนานกรมสำาหรบขอมลเพมเตมเกยวกบการใชคำาสงรปแบบและ INFORMAT
3.4 ระบตวแปรใหมในคำาสง LENGTH คณสามารถใชคำาสง LENGTH เพอสรางตวแปร และการตงคาความยาวของตวแปร ตวอยางตอไปน:
สำาหรบตวแปรอกขระ คณตองใหคาไดยาวทสดในคำาสงแรกทใชตวแปร เนองจากคณไมสามารถเปลยนความยาวกบคำาสง LENGTH ตามมาภายใน DATA step เดยวกน ความยาวสงสดของตวแปรอกขระใด ๆ ใน SAS เปนไบต 32,767 สำาหรบตวแปรตวเลข คณสามารถเปลยนความยาวของตวแปร โดยใชคำาสง LENGTH ตามมา เมอ SAS กำาหนดคาใหตวแปรอกขระ pads คา ดวยชองวาง หรอตดทอนคาทางดานขวา ถาจำาเปน เพอใหตรงกบความยาวของตวแปรเปาหมาย พจารณาคำาตอไปน:
13 1 November 2013
length address1 address2 address3 $ 200; address3=address1||address2;
เนองจากความยาวของ ADDRESS3 200 ไบต เทาแรก 200 ไบตเรยงตอกน (คาของ ADDRESS1) ถกกำาหนดใหกบ ADDRESS 3 คณอาจสามารถหลกเลยงปญหานโดยตดแตงฟงกชนการเอาชองวางตอทายจาก ADDRESS 1 กอนทำาการเรยงตอกน ดงน:address3=trim(address1)||address2;
ด SAS ภาษาอางอง: พจนานกรมสำาหรบขอมลเพมเตมเกยวกบการใชคำาสง LENGTH
3.5 ระบตวแปรใหมในคำาสง ATTRIBคำาสง ATTRIB ชวยใหคณสามารถระบคณลกษณะตวแปรตอไปนส ำาหรบตวแปรทมอยอยางนอยหนงอยาง:
FORMAT = INFORMAT = LABEL = LENGTH =
ถาตวแปรไมมอยางนอยหนงรปแบบ =, INFORMAT =, และความยาว =คณสมบตทสามารถใชเพอสรางตวแปรใหมได ตวอยาง ขนตอนขอมลตอไปนสรางตวแปรชอ Flavor ในชดขอมลชอ LOLLIPOPS:
14 1 November 2013
ห ม า ย เ ห ต : ค ณ ไ ม ส า ม า ร ถ ส ร า ง ต ว แ ป ร ใ ห ม โ ด ย ใ ช ค ำาสง LABEL หรอ LABEL ของคำาสง ATTRIB = attribute เอง สามารถใชปายชอกบตวแปรทมอยเทานนด SAS ภาษาอางอง: พจนานกรมสำาหรบขอมลเพมเตมเกยวกบการใชคำาสง ATTRIB
3.6 การใช IN = การเลอกชดขอมลThe IN = ชดขอมลตวเลอกสรางตวแปรแบบ boolean แบบพเศษทบงชวา ชดขอมลสวนขอมลการเกบขอมลปจจบน ตวแปรมคาเปน 1 เมอเปนจรง และคา 0 เมอเปนเทจ คณสามารถใช IN =ในงบชดรวมและการปรบปรงใน DATA step.
ตวอยางตอไปนแสดงรวมเขาดวยกนในชวงแรก และชดขอมลใหม IN = option คอใชเพอสรางตวแปรชอ X ทบงชวา ทงคคอชดขอมลใหมมสวนทำาใหขอมลตรงกนกบการสงเกต:
15 1 November 2013
4. การแปลงชนดตวแปร ( Variable Type Conversions )ถาคณกำาหนดตวเลขทผนแปรและกำาหนดผลของตวอกษรทตองการให
แสดงออกมา SAS จะพยายามแปลงตวอกษรเปนตวเลขและปฏบตการกบรายการ (statement) ถาแปลงขอมลไมได SAS จะพมพหมายเลขไวในระบบ(log) กำาหนดตวเลขผนแปรทหายไปและกำาหนดคาผนแปรทผดพลาด ERROR_to 1 ใหอตโนมต
สำาหรบกฎของ SAS ซงแปลงขอมลผนแปรใหเปนตวเลขผนแปรอ ต โ น ม ต แ ล ะ ใ น ท า ง ก ล บ ก น ด ไ ด จ า ก Automatic Numeric-CaracterConvertion (การแปลงตวอกษร- ตวเลข อตโนมต)
ถาคณกำาหนดตวอกษรทผนแปรและใหตวเลขแสดงผลแทนมน SAS จะพยายามแปลงตวอกษรเปนตวเลขโดยใชรปแบบ BEST w โดย w คอความกวางของตวอกษร (จำานวนตวอกษร) และมไดสงสด 32 ตวอกษร SAS จะพยายามดำาเนนการกบรายการ (statement) หากจำานวนตวอกษรผนแปรทใชไมยาวเกนไปเพอแปลงตวอกษรเปนตวเลข
SAS จะพมพหมายเหตในบนทก (log) และกำาหนดตวอกษรทผนแปรดวยเครองหมายดอกจน ถาจำานวนตวอกษรนอยมาก SAS จะไมมขอความแสดงความผดพลาดและกำาหนดความผนแปรของตวอกษรดวยเลข 0
16 1 November 2013
การแปลงชนดของตวแปรจะเปนไปโดยอตโนมต (SAS บนทกในบางสวน)
4 5 data _null_; 6 x= 3626885; 7 length y $ 4; 8 y=x; 9 put y;
36E5 NOTE: Numeric values have been converted to character values at the places given by: (Number of times) at (Line):(Column). 1 at 8:5
10 data _null_; 11 xl= 3626885; 12 length yl $ 1; 13 yl=xl; 14 xs=0.000005; 15 length ys $ 1; 16 ys=xs; 17 put yl= ys=; 18 run;
NOTE: Invalid character data, XL=3626885.00 , at line 13 column 6. YL=* YS=0 XL=3626885 YL=* XS=5E-6 YS=0 _ERROR_=1 _N_=1
17 1 November 2013
NOTE: Numeric values have been converted to character values at the places given by: (Number of times) at (Line):(Column). 1 at 13:6 1 at 16:6
ในขนแรกของตวอยาง DATA step, SAS สามารถประมาณคาทเ ห มา ะส มข อ ง Y ให เป น a 4-byte field อ ธ บ า ยกา รป ร ะ ม า ณ ค า เครองหมาย,สญลกษณ ตามหลกวทยาศาสตร ขนทสองของ DATA step, SAS ไมสามารถประมาณคาทเหมาะสมของ YL ใหเปน a 1-byte field และ แสดงเครองหมายดอกจน (*) แทน
18 1 November 2013
5. การจดตำาแหนงของคาตวแปร ( Aligning Variable Values )
ใน SAS ตวแปรทเปนตวเลขจะสอดคลองกนโดยอตโนมต คณยงสามารถควบคมการจดตำาแหนงโดยการใชรปแบบ
อยางไรกตามเมอไหรทคณกำาหนดตวอกษรลงในคำาสงทไดกำาหนดไว SAS จะเกบคาตามทปรากฏในคำาสงและไมดำาเนนการการจดตำาแหนงใด ๆออกจากขนตอนการพมพแสดงใหเหนถงการจดตำาแหนงคาตวอกขระททำาออกมาโดยโปรแกรมตอไปน:
ตวอยางนกอใหเกดผลลพธตอไปน
19 1 November 2013
6. ตวแปรอตโนมต ( Automatic Variables )
ตวแปรอตโนมตจะถกสรางขนอยางอตโนมตจากขนตอนขอมลหรอขนตอนการรายงานขอมล ตวแปรเหลานมการเพมโปรแกรมเวกเตอรขอมล แตไมไดสงออกไปยงชดขอมลทถกสรางขน คาของตวแปรอตโนมตจะเกบจากทหนงทำาซำาจากขนตอนตอไปของขอมล ขอมลทกำาหนดจะหายไป
ตวแปรอตโนมตทสรางขนโดยเฉพาะรายงานมเอกสารทมคำาสงเหลานน จากตวอยาง see the BY statement, the MODIFY statement, and the WINDOW statement in SAS Language Reference: Dictionary. คาตวแปรอตโนมต2 คาถกสรางขนจากขอมลทกขนตอน: _N_ and _ERROR_.
_N_ มการตงคาเรมตนถง 1 ในแตละครงทขนตอนขอมลลปจะผานไปยง
รายงานขอมล , ตวแปร_N_เพมขนทละ 1 คาตวแปรของ_N_หมายถงจำานวนครงทขนตอนขอมลทซำาได
20 1 November 2013
_ERROR_ มการตงคาเรมตนท 0 แตถกตงคาเปน 1 เมอใดกตามทพบขอผด
พลาด เชนขอผดพลาดในการปอนขอมลหรอเกดขอผดพลาดทางตวเลขเชนเดยวกบในการหารดวย 0 หรอลนจดลอยคณสามารถใชคาของตวแปรนจะชวยในการคนหาขอผดพลาดในการบนทกขอมลและการพมพขอความผดพลาดไปใน
SAS logจากตวอยางแตละคำาสงทงสองทเขยนลงใน SAS log ในระหวางการทำา
ซำาของขอมลแตละขนตอนเนอหาทบนทกการปอนขอมลทเกดขอผดพลาดในการปอนขอมลทพบ
if _error_=1 then put _infile_;
if _error_ then put _infile_;
7. รายการตวแปร SAS ( SAS Variable Lists )
คำานยาม
รายการตวแปร SAS เปนวธการทยากของการอางองถงรายการของชอตวแปร SAS ชวยใหคณสามารถใชรายการตวแปรตอไปน:
21 1 November 2013
ชวงหมายเลขรายการ ชอชวงรายการ คำานำาหนาชอรายการ รายชอพเศษ SAS
ดวยขอยกเวนของชวงหมายเลขรายการทอางถงตวแปรอยในรายชอตวแปรในลำาดบเดยวกบใน SAS ใชในการตดตามของตวแปร SAS ตดตามการทำางานของตวแปรทใชงานอยในลำาดบทคอมไพเลอรทพบภายในขนตอนขอมล ไมวาพวกเขาจะอานจากชดขอมลทมอย ไฟลภายนอก หรอขนตอนในการสรางในชวงรายการทมหมายเลขทคณสามารถอางถงตวแปรทถกสรางขนในลำาดบใด ๆโดยทชอเหลานนมคำานำาหนาเดยวกน
คณสามารถใชรายการตวแปรในการรายงาน SAS จำานวนมากและตงคาตวเลอกขอมลรวมถงผกำาหนดตวแปร อยางไรกตามมประโยชนโดยเฉพาะอยางยงหลงจากทคณกำาหนดตวแปรทงหมดในโปรแกรม SAS ของคณ เพราะเปนวธทรวดเรวในการอางองกลมของขอมลทมอย หมายเหต: เฉพาะรายการชวงหมายเลขทไดรบอนญาตใน RENAME=
option.
22 1 November 2013
ชวงหมายเลขรายการ
ชวงหมายเลขรายการคณจะตองมชดของตวแปรทมชอเดยวกนยกเวนตวอกษรตวสดทายหรอตวอกษรซงเปนตวเลขทตอเนองกน ตวอยางดงตอไปนสองรายการหมายถงตวแปรเดยวกน
x1,x2,x3,...,xn
x1-xnในชวงหมายเลขรายการคณสามารถเรมตนดวยหมายเลขใด ๆ และจบ
ดวยหมายเลขใด ๆ ตราบใดทคณไมละเมดกฎสำาหรบชอตวแปรทผใชจดทำาขนและตวเลขทมความตอเนองกน
ตวอยางเชนสมมตวาคณตดสนใจทจะใหบางสวนของตวแปรทเปนตวเลขของชอลำาดบในขณะท VAR1, var2 และอน ๆ จากนนคณสามารถเขยนคำาสง INPUT ดงนinput idnum name $ var1-var3;
หมายเหต: ชอของตวอกษรตวแปรจะไมรวมในรายการตวยอ
ชอชวงรายการ
รายการชวงชอขนอยกบคำาสงของความหมายตวแปรดงแสดงในตารางตอไปน:
ชอชวงรายการ
23 1 November 2013
รายการตวแปร ตวแปรรวม
x-a ตวแปรทงหมดในลำาดบความหมายของตวแปรจาก X รวมทง A
x-numeric-a ตวแปรตวเลขทงหมดจาก X รวมทง Ax-character-a ตวแปรอกขระทงหมดจาก X รวมทง A
คณสามารถใชตวเลอก VARNUM ใน PROC CONTENTS พมพตวแปรในความหมายคำาสง
ตวอยางเชนพจารณาคำาสง INPUT ตอไปน:
input idnum name $ weight pulse chins;In later statements you can use these variable lists: /* keeps only the numeric variables idnum, weight, and pulse */
keep idnum-numeric-pulse;
/* keeps the consecutive variables name, weight, and pulse */
keep name-pulse;
คำานำาหนาชอรายการ
24 1 November 2013
บางฟงกชนใน SAS และรายงานชวยใหคณสามารถใชคำานำาหนาชอรายการทจะอางถงตวแปรทงหมดทขนตนดวยตวอกษรทกำาหนด
sum(of SALES:)
บอก SAS ในการคำานวณผลรวมของตวแปรทงหมดทขนตนดวย “SALES," such as SALES_JAN, SALES_FEB, และ SALES_MAR.
รายชอพเศษ SAS
รายชอพเศษใน SAS ประกอบดวย
_NUMERIC_ ระบตวแปรทเปนตวเลขทงหมดทมการกำาหนดไวแลวในขนตอน
ขอมลทเปนปจจบน
_CHARACTER_ ระบตวแปรทเปนอกขระทงหมดทกำาหนดไวในปจจบนขนตอน
ขอมลทเปนปจจบน
_ALL_ ระบตวแปรทงหมดทกำาหนดไวในปจจบนขนตอนขอมลทเปน
ปจจบน
25 1 November 2013
8. ก า ร เ ล อ น ก า ร ร ก ษ า แ ล ะ ก า ร เ ป ล ย น ช อ ต ว แ ป ร ( Dropping,Keeping, and Renaming Variables )
ใชคำาสงหรอตวเลอกชดขอมล
ค ำา ส ง DROP, KEEP, แ ล ะ RENAME ห ร อ ค ำา ส ง DROP=, KEEP=, และ RENAME= ควบคมตวแปรโดยการประมวลผลหรอการสงออกในระหวางขนตอนของ DATA คณสามารถใชคำาสงหนงคำาสงหรอใชคำาสงรวมกนและตวเลอกชดขอมลเพอใหไดผลลพธทคณตองการ การกระทำาโดย SAS สวนใหญขนอยกบวาคณตองการผลลพธอยางไร
ใชคำาสงหรอตวเลอกชดขอมลหรอทงสองอยาง ระบชดขอมลทใสหรอขอมลทเปน output data set
26 1 November 2013
ตารางตอไปนสรปความแตกตางทวไประหวางคำาสง DROP, KEEP และ RENAME และตวเลอกชดขอมล DROP=, KEEP= และ RENAME= Statements เมอเทยบกบ Data Set Options สำาหรบคำาสงการเลอน
การเกบ และการเปลยนชอตวแปร
Statements Data Set Options
ใหผลลพธทเปน output data set เทานน
ใหผลลพธทเปน output หรอ input data sets
มผลกระทบตอ output data sets ทงหมด
มผลกระทบในแตละ data sets.
สามารถใชใน DATA steps เทานน สามารถใชใน DATA steps and PROC steps
สามารถแสดงไดทกทใน DATA steps
ตองเรยกใชงานไดทนทในแตละ data set เมอตองการ
วธการใช Input หรอ Output Data Setคณตองพจารณาไมวาจะเปนเมอคณตองการเลอน เกบรกษา หรอ
เปลยนชอตวแปร หลงจากนนโปรแกรมจะอานคาขอมลหรอเขยน data set
27 1 November 2013
ชดใหม ถาใชคำาสง DROP, KEEP, หรอ RENAME ตวแปรสมทมการเปลยนแปลงจะถกสงออกเปน data set โดยตวเลอกชดขอมลของ SAS ซงคณตดสนใจเลอกตวเลอกเมอการดำาเนนการเรมขน
ถ าต ว เล อกท ใช ใน input data set เป น dropped kept หรอ renamed กอนทโปรแกรมจะเร มดำาเนนการ ถาใช output data set ตวเลอกชดขอมลทไดทำาการเปลยนแปลงถกกำาหนดเปน data set ชดใหม (ใน DATA step ขอมล input data set จะไดขอมลเพยงหนงเดยวทไดจากคำาสง SET, MERGE หรอ UPDATE โดยท output data set จะได ขอม ล เพยงหน ง เด ยวท ได จากค ำาส ง DATA statement) โดยพจารณาตามความเปนจรงเมอคณตดสนใจเลอกใช
ถาตวแปรไมมใน output data set และเราไมสามารถเรยกใชเพอมาประมวลผล การใช input data set option ทถกแยกออกไปจาก DATA step จะมประสทธภาพมากกวา
ถาคณตองการเปลยนชอตวแปลกอนทำาการประมวลผล DATA step คณตองใชคำาสง RENAME= data set option ในการปอนชดขอมล
ถาการกระทำาทนำาไปใชกบชดขอมล output คณสามารถใชคำาสงอยางใดอยางหนงหรอตวเลอกชดขอมลในการแสดงผลขอมล
28 1 November 2013
ตารางตอไปนสรปการทำางานของขอมลทถกตงคาคำาสงเมอขอมลถกระบไวสำาหรบการปอนขอมลและการสงออกชดคอลมนสดทายของตารางบอกวาตวแปรทสามารถใชไดสำาหรบการประมวลผลใน DATA step ถาคณตองการทจะเปลยนชอตวแปรโดยใชขอมลในคอลมนสดทาย
สถานะของตวแปรและชอตวแปรเมอตวแปรถก Dropping, Keeping และ Renaming
กรณทตองการ ตวเลอกชดขอมลหรอคำา
สง
วตถประสงค สถานะของชอตวแปรหรอ
ตวแปรInput data set
DROP=KEEP=
รวมหรอไมรวมตวแปรจากการประมวลผล
ถาไมรวม ตวแปรจะไมสามารถใชไดสำาหรบการใชงานใน DATA step
RENAME= การเปลยนแปลงชอของตวแปรกอนทจะประมวลผล
ใชชอใหมในคำาสงโปรแกรมและตวเลอกชดแสดงผลขอมล; ใชชอเกาใน ชดแสดงผลขอมล input
Output data set
DROP, KEEP ระบตวแปรทจะถกเขยนลง
ตวแปรทงหมดทมอยสำาหรบประมวล
29 1 November 2013
ทงหมดของชดขอมลเอาทพท
ผล
RENAME เปลยนแปลงชอของตวแปรในทงหมดของชดขอมลเอาทพท
ใชชอเกาในคำาสงโปรแกรมและตวเลอกชดแสดงผลขอมล; ใชชอใหมในชดแสดงผลขอมล output
DROP=KEEP=
ระบถงตวแปรทถกเขยนไปยงแตละชดขอมลทถกสงออก
ตวแปรทงหมดทมอยสำาหรบประมวลผล
RENAME= เปลยนแปลงชอของตวแปรในทงหมดของชดขอมลเอาทพท
ใชชอเกาในคำาสงโปรแกรมและตวเลอกชดแสดงผลขอมลและจาก ชดแสดงผลขอมล output
การประยกตใช
ถาโปรแกรมของคณจะตองใชมากกวาหนงตวเลอกชดขอมลหรอตวเลอกชดขอมลทถกรวมหลายชดและคำาสงจะเปนประโยชนในการชวยคอ SAS drops, keeps และ renames ตวแปรในลำาดบตอไปน
ขนแรกใหเลอกชดขอมลของทานไดรบการประเมนจากซายไปขวาภายในคำาสง SET, MERGE, และ UPDATE สวนคำาสง
30 1 November 2013
DROP= และ KEEP= options เปนการประยกตกอนทจะใชคำาสง RENAME= option
ในขนตอไป คำาสง DROP และ KEEP เปนการประยกต การปฏบตกอนเมอตองการใชคำาสง RENAME
และสดทายตวเลอกบนชดแสดงผลขอมล output เปนการประเมนจากซายไปขวาภายในคำาสง DATA DROP= และ KEEP= options เปนการประยกต การปฏบตกอนเมอตองการใชคำาสง RENAME
ตวอยาง Dropping, Keeping, และ Renaming Variables
ตวอยางตอไปนแสดงวธการเฉพาะในการจดการ dropping, keeping, และ renaming variables
ตวอยางการใชค ำาสง DROP= และ RENAME= ตวเลอกชดแสดงผลขอมล และฟงกชน INPUT เปนการแปลง ตวแปร POPRANK จากตวอกษรเปนตวเลข POPRANK จะถกเปลยนเปน TEMPVAR กอนทจะประมวลผลเพ อให POPRANK ตวแปรใหมเป น output data set ส ง เ ก ต ว า ต ว แ ป ร TEMPVAR จ ะ ล ด ล ง จ า กก า ร ส ง อ อ ก ช ด ข อ ม ล แ ล ะ TEMPVAR ชอใหมจะถกนำามาใชในคำาสงของโปรแกรม
31 1 November 2013
ตวอยางการใชคำาสง DROP และ DROP= ตวเลอกชดแสดงผลขอมลในการควบคมการแสดงผลของตวแปรใหมสองตวในชดขอมล SAS คำาสง DROP ใชไดกบทงชดขอมล CORN และ BEAN คณตองใช RENAME = ตวเลอกชดขอมลทจะเปลยนชอเอาทพท ตวแปร BEANWT และ CORNWT ในขอมลแตละชด
ตวอยางนแสดงวธการใชตวเลอกชดแสดงผลขอมลในคำาสง DATA และ คำาสง RENAME รวมกน สงเกตวาชอใหม QTRTOT จะถกนำามาใชในชดคำาสง DROP =
32 1 November 2013
9. ค ว า ม แ ม น ย ำา ข อ ง ต ว เ ล ข ใ น โ ป ร แ ก ร ม SAS ( Numeric Precision in SAS Software )
วธจดเกบคาของตวเลขใน SAS
ในการจดเกบตวเลขทมจำานวนมากเพอใชในการดำาเนนการทจำาเปนตองมการคำานวณตวเลขจำานวนมากและมความความแมนยำาไปทางดานขวาของจดทศนยม SAS จะเกบคาตวเลขโดยใชขอมลเลขฐานสองแทนเลขทศนยม การแทนเลขทศนยมคอการดำาเนนการของสงทเปนทรจกกนโดยทวไปวาเปนสญลกษณทางวทยาศาสตร ซงคาทแสดงเปนตวเลขระหวาง 0 และ 1 กำาลง 10
ตอไปนเปนตวอยางของตวเลขทอยในสญลกษณทางวทยาศาสตร :.1234×104
ตวเลขในสญลกษณวทยาศาสตรจะประกอบดวยสวนตอไป
Base เปนตวเลขยกกำาลงและในตวอยางน base คอ 10 Mantissa เปนตวเลขคณดวยฐานและในตวอยางน mantissa
เปน 0.1234
33 1 November 2013
Exponent คอกำาลงทฐานจะเพมขนและในตวอยางน exponent คอ 4
การแสดงเลขทศนยมทเปนรปแบบของสญลกษณทางวทยาศาสตรนอกจากนนในสวนระบบปฏบตการฐานทไมไดเปน 10 แตเปน 2 หรอ 16
ตารางตอไปนจะสรปแนวทางตางๆของตวเลขทศนยมทถกจดเกบอยในพนทขนาด 8 ไบต
สรปตวเลขทศนยมทจดเกบอยในพนทขนาด 8 ไบต
ตวอยาง ฐาน Exponent Bits
Maximum Mantissa Bits
IBM mainframe
16 7 56
IEEE 2 11 52
34 1 November 2013
SAS ชวยใหการตดทอนตวเลขทศนยมผานทางคำาสง LENGTH ซงจะชวยลดจำานวนของ mantissa bits สำาหรบขอมลเพมเตมเกยวกบผลกระทบของการตดทอนความยาวของตวเลขทถกจดเกบดวยความแมนยำานอย
การแกไขปญหาเกยวกบการเปนตวแทนเลขทศนยม
โดยภาพรวม
ในสถานการณสวนใหญวธการท SAS จะจดเกบคาทเปนตวเลขไมไดสงผลกระทบตอผใชงาน อยางไรกตามการแสดงขอมลเลขทศนยมสามารถอธบายความผดปกตทคณอาจแจงใหทราบในการทำางานของโปรแกรม SAS หวขอตอไปนจะระบประเภทของปญหาทอาจเกดขนในสภาพแวดลอมการดำาเนนงานทหลากหลายและวธทคณสามารถคาดการณและหลกเลยงปญหาทเกดขน
การแทนเลขทศนยมบนเมนเฟรม IBM
SAS for z / OS ใชแบบเมนเฟรมของไอบเอมแทนขอมลเลขทศนยมดงตอไปน:SEEEEEEE MMMMMMMM MMMMMMMM MMMMMMMMbyte 1 byte 2 byte 3 byte 4
MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMMbyte 5 byte 6 byte 7 byte 8
ตวอยางนสอดคลองกบไบตของขอมล ดวยอกขระแตละตวเปน 1 บตดงน
35 1 November 2013
S ในไบต 1 เปนบตเครองหมายของตวเลข A มคา 0 ในบตทใชในการแทนตวเลขเปนบวก
อกษร E จำานวน 7 ตวใน byte 1 เปนตวแทนของจำานวนเตมเลขฐานสองทมลกษณะเฉพาะ คณสมบตทแสดงถงเลขชกำาลงและไดมาโดยการเพมความลำาเอยงไปยงสญลกษณเกดขนจรง ความลำาเอยงคอคาชดเชยทใชในการใหสามารถยกกำาลงทงลบและบวกดวยความลำาเอยงทเปนตวแทนของ 0 ถาความลำาเอยงไมไดใชบตเพมเตมสำาหรบเลขชกำาลงจะตองไดรบการจดสรร ตวอยางเชน ถาระบบมพนกงานลำาเอยงจาก 64 ลกษณะเฉพาะ 66 กบคาทแสดงถงเลขชกำาลงของ 2 ในขณะทลกษณะของ 61 เปนเลขชกำาลง -3
ตวอกษร M ทเหลอในไบตท 2 ถง 8 แสดงบตของฐาน มประเดนทสอใหวากอนทบตซายสดของฐาน ดงนนฐานมกจะนอยกวา 1 ระยะทจดใชแทนจดทศนยมเพราะจดทศนยมอนมานไดวาคณใชงานตวเลข (ฐาน 10) ทศนยมซงไมอาจจะไมเกดขน หรอใชรปแบบทวไปของจดทศนยม
เลขยกกำาลงมฐานเดยวกน และเพอไมใหสบสนวามฐานตวไหนทเปนตวแทน โดยจะใชสญลกษณแสดงแทนจะอยในเลขฐานสอง แตสญลกษณทใชในการกำาหนดจำานวนครงทพนฐานควรจะคณดวย mantissa ในกรณของไอบเอม mainframes ฐานของตวแทนคอ 16 สำาหรบเครองอน ๆ กเปนปกต 2 หรอ 16
36 1 November 2013
แตละบตในฐานเศษสวนทมเศษคอ 1 และทมตวหารเปนกำาลง 2 ตวอยางเชนบตและไบตท 2 แทน ( 1
2)1
บตตอไปแทน ( 12)2
เปนตน กลาวอกนย
หนง ฐานคอผลรวมของชดเศษสวนเชน 12 ,14, 18 และอนๆ เพราะฉะนนสำาหรบ
ตวเลขทศนยมทจะแสดงวาคณตองสามารถถายทอดเปนผลรวมทกลาวมาแลวกอนหนา ตวอยางเชน 100 จะแสดงเปนนพจนตอไปน:
( 14 + 18+ 164 )×162
เพอแสดงวธการแสดงออกดงกลาวจะไดรบทงสองตวอยางตอไปนตวอยางแรกอยในฐาน 10 และ 100 ถกแสดงคาดงตอไปน:
100.
ชวงอยในตวเลขวาเปนจดเรมตน โดยฐานตองนอยกวา 1 ดงนนปกตคานไดโดยเปลยนจดสามแหงไปทางขวาซงกอใหเกดคาตอไปน:
.100เพราะการเปลยนตำาแหนง 3 ตำาแหนงทำาให 3 เปนเลขชกำาลง .100×103 = 100
ตวอยางทสอง เปนฐาน 16 ในเลขฐานสบหก และ 100 (ฐาน 10)จะเขยนดงตอไปน: 64.
การเปลยนจดสองจดไปทางซายกอใหเกดคาตอไปน: .64
37 1 November 2013
ขยบจดไป 2 ตำาแหนงทำาให 2 เปนเลขชกำาลง จะได .64×162
เลขฐานสองของจำานวนนเปน .01100100 ซงสามารถแสดงในนพจนดงตอไปน:
¿
ในตวอยางนยกกำาลงคอ 2 เพอใชแทนเลขชกำาลงทคณทำาใหเกดความลำาเอยงจาก 64 ไปยงเลขชกำาลงแทนเลขฐานสบหกของคาทเปนผลลพธ, 66, 42 แทน binary จะเปนดงน:
01000010 01100100 00000000 0000000000000000 00000000 00000000 00000000
การแทนเลขทศนยมใน OpenVMSใน OpenVMS, SAS เกบคาทเปนตวเลขในรปแบบ D-floating ซง
มรปแบบดงตอไปน:MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMMbyte 8 byte 7 byte 6 byte 5
MMMMMMMM MMMMMMMM SEEEEEEE EMMMMMMMbyte 4 byte 3 byte 2 byte 1
ในรปแบบ D-floating เลขชกำาลงคอ 8 เศษแทนทจะเปน 7 แตใชฐาน 2 แทนฐาน 16 และทำาใหมความลำาเอยงจาก 128 ซงหมายความวาขนาดของรปแบบ D-floating ไมไดดเทาทขนาดของตวแทนของไอบเอม
38 1 November 2013
ฐานของรปแบบ D-floating คอ 55 บต อยางไรกตามคาเลขทศนยมภายใต OpenVMS เปนปกตซงหมายความวาบตลำาดบสงสดจะเปน 1 เพราะไมจำาเปนตองเปนตวแทนของบตลำาดบสงใน mantissa ดงนนบตสงสงถกซอนอย
ตวอยาง เชนคาทศนยม 100 แสดงในเลขฐานสองจะเปนดงน: 01100100.
คานเปนคาปกต โดยเปลยนจดดงน: 0.1100100 เพราะจดขยบไปทางซายเจดตำาแหนง เลขยกกำาลง 7 รวมทงความ
ลำาเอยงจาก 128 เปน 135 แสดงอยในไบนารเปนจำานวนดงตอไปน: 10000111
ใหเปนตวแทนของ mantissa ลบดวยบตทซอนจากเขตขอมลสวนหนง: .100100
คณสามารถรวมเครองหมาย (0), เลขยกกำาลงและฐานเพอผลตในรปแบบ D- floating:
MMMMMMMM MMMMMMMM MMMMMMMM MMMMMMMM00000000 00000000 00000000 00000000
MMMMMMMM MMMMMMMM SEEEEEEE EMMMMMMM00000000 00000000 01000011 11001000
การแสดงจดทศนยมโดยใช IEEE Standard
39 1 November 2013
สถาบนวศวกรไฟฟาและอเลกทรอนกส (IEEE) แทนจะถกใชโดยระบบปฏบตการจำานวนมากรวมถง Windows และ UNIX แทนมาตรฐาน IEEE ใช เลขช ก ำาล ง 11 บตท ม ฐาน 2 และท ำา ใหมความล ำา เอ ยง 1023 ซ งหมายความวาจะมความสำาคญมากขนกวาการเปนตวแทนไอบเอมเมนเฟรม แตบางคร งท ค าใชจายจาก 3 บตนอยกวาในฐาน ค าของ 1 แทนดวยมาตรฐาน IEEE จะเปนดงน:
3F F0 00 00 00 00 00 00
ความแมนยำาเมอเทยบกบขนาด
ตามทกลาวไวในสวนกอนหนานการเปนตวแทนเลขทศนยมชวยใหตวเลขขนาดใหญมาก (ตวเลขเชน 2 ถงกำาลง 30) และองศาความแมนยำาสง (จำานวนตวเลขทอยทางขวาของทศนยม) อยางไรกตามระบบปฏบตการทแตกตางกนเกยวกบวธการมากความแมนยำาและวธการทจะชวยใหมประสทธภาพ
ในวธเกบคาตวเลขใน SAS จะเหนไดวาจำานวนบตเลขชกำาลงและบต mantissa แตกตางกนไปบตอน ๆ ทสำารองไวสำาหรบฐานจำานวนทมความแมนยำามากขนบตอน ๆ ทสำารองไวสำาหรบเลขชกำาลง
ไมวาจะเปนความแมนยำาหรอความสำาคญเปนสงสำาคญมากขนอยกบลกษณะของขอมลของคณ ตวอยางเชนถาคณกำาลงทำางานกบโปรแกรมฟสกสจำานวนมากอาจมความจำาเปนและความสำาคญนาจะเปนสงทสำาคญมากกวา แตถาคณกำาลงทำางานกบการใชงานดานการธนาคารทหลกทกเปนสงสำาคญ แตจำานวนของตวเลขทไมดนนกมความแมนยำาเปนสง
40 1 November 2013
สำาคญมาก สวนใหญมกจะโปรแกรม SAS จะตองมทงความแมนยำาและขนาดทมใหอยางพอเพยงโดยแทนขอมลเลขทศนยม
ขอควรพจารณาในการคำานวณของเรองเศษสวน
โดยไมคำานงถงวธการมากความแมนยำามอยยงคงมปญหาทตวเลขบางอยางไมสามารถแสดง ในระบบเลขทศนยม เศษสวน 1/3 ไมสามารถแสดงวาในทศนยม ในทำานองเดยวกนเศษสวนทศนยมมากทสด (เชน 0.1) ไมสามารถแสดงวาในฐาน 2 หรอฐาน 16 เลขระบบ นคอเหตผลหลกสำาหรบการยากลำาบากในการจดเกบตวเลขทเปนเศษสวนในการเปนตวแทนขอมลเลขทศนยม
พจารณาแทนเมนเฟรมของไอบเอม 0.1: 40 19 99 99 99 99 99 99
ใหสงเกตเลขทาย 9 หลกคลายคลงกบเลขทาย 3 หลกในการเปนตวแทนทศนยมพยายาม 1/3 (0.3333 ... ) ขาดความแมนยำานจะความรำาคาญโดยดำาเนนการเลขคณต พจารณาสงทจะเกดขนถาคณเพมการแสดงทศนยม 1/3 หลายครง เมอคณเพม .33333 ... เพอ .99999 ... คำาตอบทางทฤษฎคอ 1.33333 ... 2 แตในทางปฏบตคำาตอบนเปนไปไมได ผลรวมจะกลายเปนไมแนนอนเปนคาดำาเนนการ
41 1 November 2013
ในทำานองเดยวกนกระบวนการเดยวกนทเกดขนเมอขนตอนทขอมลตอไปนจะถกดำาเนนการ:
ขอความ AT ZERO ในขนตอนทขอมลจะไมพมพเพราะการสะสมของจำานวนไมแนชดนำาเสนอขอผดพลาดพอทจะทำาใหคาทแนนอนจาก 0 เปนไมเคยพบ จำานวนอยใกล แตไมเคยใหได 0 ปญหานจะแกไขไดอยางงายดายโดยการปดเศษอยางชดเจนกบแตละซำาเปนขอความตอไปนแสดง:
42 1 November 2013
การพจารณาการเปรยบเทยบตวเลข
ตามทกลาวไวในขอควรพจารณาการค ำานวณของเศษสวนแนชดสามารถทำาใหเกดปญหากบการคำานวณ ความไมแนชดยงสามารถทำาใหเกดปญหากบการเปรยบเทยบ พจารณาตวอยางตอไปนท ค ำาส ง PUT จะไมทำางาน:
อยางไรกตามหากคณเพมฟงกชนเชนในตวอยางตอไปนคำาสง PUT จะถกดำาเนน การ:
43 1 November 2013
โดยทวไปถาคณกำาลงทำาเปรยบเทยบกบคาทเปนเศษสวนกคอการปฏบตทดในการใชฟงกชน ROUND
การจดเกบตวเลขทมความแมนยำานอย
ตามทกลาวไวในวธเกบคาตวเลข SAS ชวยใหคาตวเลขจะถกเกบไวบนดสกมนอยกวาความแมนยำาเตมรปแบบ ใชคำาสงความยาวทกำาหนดจำานวนไบตทถกนำามาใชในการจดเกบจ ำานวนทศนยม ใชค ำาสง LENGTH อยางระมดระวงเพอหลกเลยงการสญเสยขอมลทสำาคญ
ตวอยางเชนการเปนตวแทนเมนเฟรมของไอบเอมใช 8 ไบตสำาหรบความแมนยำาเตม แตคณสามารถเกบเพยงเปน 2 ไบตบนดสก คา 1 จะแสดงเปน 41 10 00 00 00 00 00 00 ใน 8 ไบต ใน 2 ไบตกจะตดคา 41 10 ออกไป คณยงมชวงเตมของความสำาคญเพราะตวแทนยงคงเหมอนเดม มตวเลขเพยงนอยทเกยวของ ลดลงในจำานวนของตวเลขหลกหมายความวาอยางใดอยางหนงนอยลงไปทางขวาของสถานททศนยมหรอตวเลขทนอยลง
ต ว อ ย า ง เ ช น พ จ า ร ณ า ห ม า ย เ ล ข 1234567890 ซ ง จ ะ เ ป น .1234567890 ยกกำาลง 10 จาก 10 (ในฐาน 10) หากคณมเพยงหาหลกความเทยงตรงเลขจะกลายเปน 123460000 (ปดเศษขน) โปรดสงเกตวาเ ป น ก ร ณ น ไ ม ค ำา น ง ถ ง ก ำา ล ง ข อ ง 10 ท ใ ช (0.12346, 12.346, .0000012346, และอน ๆ )
เหตผลเดยวทจะตดทอนความยาวโดยใชคำาสง LENGTH เพอประหยดเนอทดสก คาทงหมดจะถกขยายใหมขนาดเตมรปแบบทจะดำาเนนการคำานวณ
44 1 November 2013
ในขอมลและขนตอน PROC นอกจากนคณจะตองระมดระวงในการเลอกของคณความยาวในขณะทการอภปรายแสดงใหเหนหนาทแลว
พจารณาความยาวของ 2 ไบตเมอระบบเมนเฟรมของไอบเอม คานสำาหรบการ 1 ไบตในการจดเกบสญลกษณและเขาสระบบและ 1 ไบตสำาหรบแมนทสคาทมากทสดทสามารถเกบไวใน 1 ไบตคอ 255 ดงนนหากตวแทนเปน 0 (16 หมายถงอำานาจท 0 หรอ 1 คณดวยฐาน) จากนนจำานวนเตมทใหญทสดทสามารถเกบไวดวยความเชอมนทสมบรณแบบคอ 255 อยางไรกตามบางคนจำานวนเตมขนาดใหญสามารถเกบไวเพราะรายการ 16 รายการ ตวอยางเชนพจารณาแทน 8 ไบตของตวเลข 256-272 ในตารางตอไปน:
การแสดงหมายเลข 256-272 ใน 8 ไบต
คา Sign/Exp
Mantissa 1
Mantissa 2-7
ขอควรพจารณา
256 43 10 000000000000
เลข 0 ตวทายมจำานวน 16 ตว
257 43 10 100000000000
ไบตพเศษทจำาเปน
258 43 10 200000000000
259 43 10 300000000000
. . . . .
. . . . .
. . . . .271 43 10 F0000000
0000
45 1 November 2013
272 43 11 000000000000
เลข 0 ตวทายมจำานวน 16 ตว
หมายเลข 257-271 ไมสามารถเกบไววาเปนครงแรกใน 2 ไบต ไบตทสามจำาเปนตองเกบหมายเลขแนนอน เปนผลใหรหสตอไปนกอใหเกดผลลพธทผด:
คำาสง PUT จะไมดำาเนนการเนองจากคาของ X เปน 256 (คา 257 ตดออกไป 2 ไบต) เรยกวา 256 ถกเกบไวในไบตท 2 เปน 4310 แต 257 ยงถกเกบไวในไบตท 2 เปน 4310 ดวยไบตทสามของเมอ 10 ถกตดออก
46 1 November 2013
คณจะไดรบการเตอนวาคา 257 ถกตดออกในขนตอนแรกไมมขอมล อยางไรกตามซง Y1 มคา 258 เนองจากคาของ x จะถกเกบไวในเตม 8 ไบตแทนเลขทศนยมในโปรแกรมแบบเวกเตอรขอมล คาจะถกตดทอนเฉพาะเมอเกบไวในชดขอมล SAS Y2 มคา 257, X เพราะกอนทจะถกตดทอนตวเลขทอานในเวกเตอรโปรแกรมขอมล
ขอควรระวง:
o อยาใชคำาสง LENGTH ถาคาตวแปรของคณไมไดเปนจำานวนเตม
ตวเลขบางสวนสญเสยความแมนยำาถาตดออก นอกจากนการใชคำาสง LENGTH ทตดคากตอเมอพนทวางในดสกทมจำากด หมายถงตารางความยาวในเอกสารประกอบของ SAS สำาหรบสภาพแวดลอมการทำางานของคณสำาหรบคาจำานวนสงสด
การตดทอนตวเลขและทำาการเปรยบเทยบ
ฟงกชน TRUNC จะตดตวเลขความยาวทตองการแลวกลบขยายตวเลขความยาวเตมรป การตดและการขยายตวทตามมาซ ำาผลกระทบของตวเลขการจดเกบในเวลาทนอยกวาความยาวเตมรปแบบและจากนนจะอานคา ตวอยางเชนถาตวแปร x=1/3;
จะถกเกบไวขนาดความยาว 3 แลวเปรยบเทยบตอไปนไมจรง: if x=1/3 then ...;
อยางไรกตามการเพมฟงกชน TRUNC ทำาใหการเปรยบเทยบทแทจรงเชนเดยวกนดงตอไปน:
47 1 November 2013
if x=trunc(1/3,3) then ...;
การกำาหนดจำานวนไบตทมความจำาเปนเพอเกบหมายเลขอยางถกตอง
เพอกำาหนดจำานวนขนตำาของไบตทจำาเปนในการเกบคาอยางถกตองคณสามารถใชฟงกชน TRUNC ตวอยางเชนโปรแกรมตอไปนพบวาความยาวขนตำาของไบต (MINLEN) ทจำาเปนสำาหรบตวเลขทจดเกบไวในขอมล SAS ชดพนเมองชอ NUMBERS ขอมลหมายเลขชดประกอบดวยชดคาตวแปร มลคามชวงของตวเลขในตวอยางน 269-272:
ผลลพธตอ ไปนแสดงใหเหนถงผลท ไดจากโคดน
ใชฟงกชน TRUNC
48 1 November 2013
โปรดสงเกตวาความยาวขนตำาทจำาเปนสำาหรบ 271 คามากกวาขนตำาทจำาเปนสำาหรบคา 272 ความจรงเร องนแสดงใหเหนวามนเปนไปไดส ำาหรบจำานวนมากทสดอยในชวงของตวเลขทจะตองไบตนอยลงของการจดเกบทมขนาดเลกกวาจำานวน ถามความแมนยำาเปนสงจำาเปนสำาหรบตวเลขทงหมดอยในชวงทคณควรจะไดรบความยาวขนตำาสำาหรบตวเลขทงหมดไมเพยงหนงทใหญทสด
ความแมนยำาสองเทากบความแมนยำาเดยวของตวเลขทศนยม
อาจมขอมลทสรางขนโดยโปรแกรมภายนอกทคณตองการอานในชดขอมล SAS หากขอมลทอยในการแทนเลขทศนยมคณสามารถใช informat RBw.d การอานในขอมล แตมขอยกเวน
informat RBw.d อาจตดทอนตวเลขทศนยมความแมนยำาสองถาคา w นอยกวาขนาดของความแมนยำาสองตวเลขเลขทศนยม (8 ในทกระบบปฏบตการทกลาวถงในสวนน) ดงนน RB8 informat สอดคลองกบเตมรป 8 ไบตจดลอย RB4 informat สอดคลองกบ 8 ไบตลอยจดตดออกไป 4 ไบตตรงเชนเดยวกบความยาวท 4 ในขนตอนขอมล
49 1 November 2013
8 ไบตจดทศนยมทถกตดออกไป 4 ไบตอาจจะไมเปนเชนเดยวกบการโฟลในโปรแกรม C ในภาษา C, 8 ไบตตวเลขเลขทศนยมเรยกวาค ใน FORTRAN มนเปนจรง * 8 ของไอบเอมใน PL / ฉนมนเปนไบนาร FLOAT (53)4 ไบตต วเลขเลขทศนยมเรยกวาลอยในภาษา C, REAL * 4 ใน FORTRAN และไบนาร FLOAT (21) ของไอบเอมใน PL / I.
บนเมนเฟรมคอมพวเตอร IBM, หมายเลขเดยวแมนยำาเลขทศนยมอยตรงเชนเดยวกบตวเลขความแมนยำาสองตดออกไป 4 ไบต บนระบบปฏบตการทใชมาตรฐาน IEEE นไมไดเปนคดเดยวจำานวนของความแมนยำาเลขทศนยมใชเปนจำานวนทแตกตางกนของบตสำาหรบเลขยกกำาลงและใชความลำาเอยงทแตกตางกนเพอใหการอานคาในการใช RB4 informat ไมกอใหเกดผลทคาดหวงไว
การถายโอนขอมลระหวางระบบปฏบตการ
ปญหาของความแมนยำาและขนาดเมอใชต วเลขทศนยมทไมไดถกควบคมในระบบปฏบตการเดยว ปญหาเพมเตมสามารถเกดขนเมอคณยายจากระบบปฏบตการหนงไปยงอกเวนแตคณจะใชความระมดระวง สวนนอธบายถงปจจยทจะตองพจารณาเมอคณกำาลงลำาเลยงชดขอมลทมคาทเปนตวเลขมขนาดใหญมากหรอเลกมากโดยใชอพโหลดและวธการดาวนโหลด CPORT และวธการ CIMPORT หรอเครองมอการขนสง
50 1 November 2013
สรปสาระสำาคญของเลขทศนยมเลขทงหมดทเกบไวในไบตท 8 แสดงใหเหนถงจำานวนสงสดของตวเลขจากฐานตวแทนและ mantissa เพราะมความแตกตางในคาจำานวนสงสดทสามารถเกบไวในสภาพแวดลอมทแตกตางกนในการดำาเนนงานอาจจะมปญหาในการถายโอนขอมลเลขทศนยมของคณจากเครองหนงไปยงอกท
พจารณาเชนการขนสงขอมลระหวางเครองคอมพวเตอรเมนเฟรมของไอบเอมและ PC เมนเฟรมของไอบเอมมการ จำากด ชวงประมาณ 0.54 E-78-0.72 E76 (และรายการเทยบเทาเชงลบของพวกเขาและ 0) ตวเลขทศนยมของ เครองอน ๆ เชนเครองคอมพวเตอรทมขอ จำากด มากขน (พซมขด จำากด บนของประมาณ 1E308) ดงนนถาคณกำาลงถายโอนตวเลขในขนาดของ 1E100 จากพซไปยงเมนเฟรมคณสญเสยทสำาคญ ในระหวางการถายโอนขอมลตวเลขทถกกำาหนดเปนขนตำาหรอสงสดทอนญาตบนระบบปฏบตการทดงนน 1E100 ในเครองคอมพวเตอรจะถกแปลงเปนคาทจะอยทประมาณ 0.72 E76 บนเมนเฟรมของไอบเอม
ขอควรระวง:
o การถายโอนขอมลระหวางเครองจะมผลตอความแมนยำาของตวเลข
หากคณถายโอนขอมลจากเครองคอมพวเตอรเมนเฟรมของไอบเอมกบเคร องคอมพวเตอรทแจงใหทราบวาจำานวนของบตสำาหรบฐานคอ 4 ทนอย
51 1 November 2013
กวาสำาหรบเมนเฟรมของไอบเอมซงหมายความวาคณจะสญเสย 4 บตเมอมการยายไปยงเคร องคอมพวเตอร นคอความแตกตางทมความแมนยำาและขนาดเปนปจจยทเมอยายจากสภาพแวดลอมการทำางานทอน ๆ ใด ๆ ทการแทนเลขทศนยมทแตกตางกน