1 12 Bahan kajian ini merupakan bahan kajian untuk pertemuan pertama dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi...
Bahan kajian ini merupakan bahan kajian untuk pertemuan pertama dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “Pengenalan Sistem SAS”. Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor.
SAS merupakan salah satu software statistika yang awalnya dikembangkan untuk analisis data statistika. Namun seiring dengan perkembangannya software ini juga dibekali kemampuan untuk keperluan lain yang menunjang analisis data seperti misalkan untuk sistem informasi geografis. Di dalam SAS, tambahan kemampuan pada suatu tema tertentu ini dirangkum dalam satu modul. Bagian ini akan menyajikan sekilas tentang SAS termasuk beberapa modul. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
2
Di dalam SAS, modul merupakan satu paket yang menangani suatu hal tertentu. Dari semua modul yang ada di SAS, terdapat satu modul inti yang menjadi motor penggerak kemampuan dasar SAS yang disebut dengan SAS/BASE. Adapun modulmodul lain merupakan satu paket tertentu yang berkaitan dengan keperluan khusus.
3
Selain untuk analisis statistika, SAS juga memiliki kemampuan untuk hal-hal terkait seperti misalnya penyimpanan, modifikasi, dan penanganan file data, pembuatan grafik-grafik data, serta sistem informasi. Kemampuan SAS untuk menangani data inilah yang nantinya akan dibedah lebih lanjut pada mata kuliah ini.
4
Di dalam pengerjaannya, SAS berbasiskan pada perintah-perintah yang dijalankan melalui suatu program. Karena itu pengguna SAS perlu mengetahui aturan-aturan program SAS agar dapat memanfaatkan kemampuan SAS secara optimal. Selain program, komponen lain yang terlibat adalah file data yang akan dikenai berbagai prosedur pada program, file output hasil dari proses program SAS serta file log yang memberi informasi mengenai proses sewaktu menjalankan program SAS.
5
Secara umum sistem SAS bekerja dengan menjalankan program pada file data yang kemudian hasil program tersebut akan menghasilkan output serta informasi dari proses pengerjaan program yang tertuang di log.
6
Komposisi program SAS secara umum terbagi menjadi dua unsur yaitu: (1) tahapan data dan (2) tahapan prosedur. Tahapan data berisikan tahapan penyiapan atau pembuatan data yang bisa berupa: (1) pembacaan data yang dimasukkan langsung di dalam program atau berasal dari sumber di luar SAS, (2) melakukan modifikasi data yang ada untuk kemudian dibuat gugus data baru. Sementara itu, tahapan prosedur berkenaan dengan penggunaan satu atau lebih prosedur-prosedur di SAS. Sebagai informasi, suatu prosedur merupakan satu ramuan program untuk pengerjaan tertentu, seperti misalkan pengerjaan analisis regresi yang tertuang di prosedur PROC REG.
7
Urutan proses pengerjaan program di SAS biasanya dimulai dengan tahapan data, baik untuk memanggil data dari luar atau memasukkan data langsung di dalam program, yang kemudian dilanjutkan dengan pengerjaan terkait data tersebut melalui tahapan prosedur. Setelah itu, tahapan berikutnya bisa jadi melibatkan kembali tahapan prosedur yang dilanjutkan dengan tahapan data dsb.
8
Sebagaimana dengan suatu bahasa, program SAS juga memiliki aturan-aturan main sendiri. Beberapa aturan terkait program SAS adalah bahwa program SAS tersusun dari pernyataan-pernyataan SAS yang setiap pernyataan tersebut diakhiri dengan tanda titik-koma (;) Dengan demikian dalam satu baris program dapat terdiri dari beberapa pernyataan SAS selama masing-masing pernyataan diakhiri tanda ini. Peubah di dalam program SAS mengikuti aturan penamaan peubah pada bahasa program lain yaitu boleh terdiri dari huruf dan angka namun selalu harus diawali huruf serta tidak boleh menggunakan karakter khusus seperti spasi. Ilustrasi program pada slide ini memberi gambaran tahapan data berupa pembuatan file data bernama “filestk” yang datanya terdiri dari peubah nama, nip, dan pangkat serta data dimasukkan langsung di dalam program. Setelah itu program dilanjutkan dengan tahapan prosedur untuk mencetak isi peubah nama dan nip dari file data tersebut pada output.
9
Dari sudut pandang SAS, data tergolong menjadi dua yaitu data SAS dan data non SAS. Keterangan rinci dan pembandingan keduanya dapat dilihat di slide.
10
Di dalam tahapan data dapat melibatkan data SAS dan data non SAS sebagai inputnya, dan menghasilkan baik data SAS dan data non SAS sebagai keluarannya.
11
Sementara itu tahapan prosedur hanya bisa membaca data SAS sebagai inputnya yang selanjutnya menghasilkan file output serta file data yang juga bertipe data SAS.
12
13
File data non SAS terdiri dari dua tipe: (1) eksternal bila tersimpan di luar program SAS dan (2) in-stream bila data langsung dimasukkan di program SAS. Adapun file data SAS juga terdiri dari dua tipe: (1) sementara bila file data SAS tersimpan di direktori sementara dan (2) permanen bila tersimpan di direktori yang dibuat sendiri oleh pengguna. Bila SAS ditutup, maka direktori sementara akan dihapus berikut semua isinya, sementara direktori yang dibuat oleh pengguna tidak dihapus sehingga seluruh isinya juga masih ada.
14
Program SAS merupakan serangkaian pernyataan SAS. Tiap pernyataan SAS harus diakhiri dengan tanda titik-koma (;). Huruf besar dengan kecil tidak dibedakan di SAS
15
Satu pernyataan SAS dapat memakan beberapa baris program selama di bagian akhirnya diakhiri tanda titik koma. Dalam satu baris program bisa terdapat lebih dari dua pernyataan SAS. Pernyataan SAS dapat dimulai dari mana saja.
16
Komentar di dalam program SAS dapat diletakkan setelah * dan sebelum ; atau setelah /* sebelum */. Cara pertama biasa digunakan untuk komentar pada satu kalimat, sementara cara kedua untuk komentar yang lebih panjang.
17
Gugus data SAS berekstensi .sas7bdat dengan strukturnya terdiri dari baris kolom dengan kolom menunjukkan peubah dan baris menunjukkan pengamatan. Dalam satu file data dapat terdiri dari peubah numerik dan karakter. Panjang peubah secara ketentuan awal sebesar 8.
18
Nilai hilang pada data SAS disimbolkan dengan tanda . untuk peubah numerik dan kosong untuk peubah karakter. Atribut peubah seperti tipe peubah, panjang dsb juga tersimpan di gugus data SAS.
19
Aturan penamaan peubah di SAS: (1) dapat sepanjang 32 karakter atau kurang, (2) dapat mengandung huruf, angka, dan garis bawah (_) namun harus dimulai dengan huruf atau garis bawah (_), (3) dapat terdiri dari huruf besar/kecil.
20
SAS memiliki beberapa jendela utama: (1) Editor untuk mengetikkan perintah SAS, (2) log untuk sajian tentang hasil sewaktu menjalankan program SAS, serta (3) output yang berisi sajian keluaran yang bersifat teks.
21
Selain tiga jendela tersebut, terdapat jendela lain di SAS yang dapat diakses yaitu: (1) results yang memuat daftar isi dari jendela output, (2) explorer untuk sajian folder, library SAS ataupun gugus data SAS, serta (3) jendela-jendela lain seperti jendela untuk sajian output format HTML serta output berupa grafik resolusi tinggi.
22
Untuk menjalankan program SAS dapat dilakukan dengan memilih submenu Submit dan menu Run atau klik tombol ikon orang berlari yang berwarna biru. Hasil dalam bentuk teks dapat dilihat di jendela output sementara keterangan tentang program yang dijalankan bisa dilihat di jendela log Pilih submenu Recall Last Submit pada menu Run untuk memanggil kembali program bila program tidak sengaja hilang dari layar.
23
Bila dirasakan isi dari jendela output dan log terlalu penuh, isi yang ada dapat dihilangkan dengan pilih menu eidt submenu clear all.
24
Untuk mencetak atau menyimpan isi jendela output dapat dilakukan langsung dari jendela ini. Jendela results dapat membantu kita memilih satu hasil tertentu. Keluaran di jendela Output ini dapat pula dicopy dan digandakan di tempat lain seperti Word atau notepad bila diperlukan.
25
Untuk membuat output dalam format HTML dapat dilakukan di menu Tools>Options/Preferences, kemudian pilih menu Create HTML. Kedua keluaran dengan format teks dan HTML akan tersedia.
26
Library dapat dipandang sebagai tempat penyimpanan versi SAS yang sebenarnya merujuk ke suatu folder tertentu di komputer kita. Library dapat berupa built-inlibrary yang otomatis dibuat tiap kali SAS dijalankan (Sashelp, Sasuser, dan Work) dan dapat pula berupa library yang dibuat sendiri oleh pengguna SAS. Library Work inilah yang menjadi library default tiap kali kita bekerja di SAS sekaligus tempat penyimpanan berbagai file SAS yang dibuat di SAS bila tidak ditentukan disimpan di library lain.
27
Membuat library bisa dengan dua cara: (1) Klik icon bergambar lemari kabinet atau klik menu File->New di Jendela Library (2) menggunakan program libname namalibrary “path library”; dengan namalibrary diganti dengan nama library yang kita inginkan sementara path library diisikan folder di komputer tempat penyimpanan fisik dari library yang kita buat di SAS.
28
Pada bagian terakhir slide tersebut memberikan contoh pembuatan library baru bernama mitchell yang merujuk di folder z:\stat 517\Mitchell.
29
Merujuk file data yang tersimpan di library dilakukan dengan menuliskan nama library terlebih dahulu, tanda titik “.” yang disusul nama file data.
30
File data SAS yang tersimpan dapat dilihat melalui SAS Explorer. Membuka suatu file data dilakukan dengan klik ganda. Bila menginginkan informasi detil tentang atribut peubah pada suatu file data, klik kanan pada file data kemudian pilih Column attributes.
31
SAS juga menyediakan pilihan pengaturan SAS lewat Options.
32
Bahan kajian ini merupakan bahan kajian untuk pertemuan kedua dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “SAS/Base”. Pertemuan ini membahas lebih dalam mengenai satu modul dasar di SAS yaitu SAS/BASE. Modul ini mencakup tahapan data, SQL, serta beberapa prosedur. Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
33
Sebagaimana dijelaskan pada materi sebelumnya bahwa tahapan data berkenaan dengan penyiapan data, baik membaca dari sumber luar ataupun dimasukkan langsung pada program SAS, maupun pengolahan data yang sudah ada untuk kemudian disimpan ke gugus data SAS. Slide ini memberikan informasi pernyataanpernyataan yang tersedia di tahapan data yang masing-masing berkenaan yang aspek tertentu.
34
Sementara itu, tahapan prosedur dimulai dengan pernyataan Proc dan diikuti keyword untuk prosedur tertentu seperti PROC PRINT untuk mencetak isi suatu file di Output, PROC MEAN untuk menghitung deskripsi data numerik dsb.
35
Tahapan data diawali dengan pernyataan DATA yang diikuti nama file gugus data SAS yang akan dibuat. File gugus data SAS yang akan dibuat bisa berupa file sementara (akan terhapus bila SAS ditutup) atau permanen (akan tetap tersimpan setelah SAS ditutup) tergantung di library mana file data SAS tersebut tersimpan. File bertipe sementara bila tersimpan di library work dan bertipe permanen bila tersimpan di library lain yang biasanya dibuat sendiri oleh pengguna. Untuk merujuk file data SAS dilakukan dengan menyebutkan library, tanda titik (.), dan disusul nama file data SAS. Pengecualian untuk library work yang boleh tidak disebutkan.
36
Apabila dalam tahapan data diinginkan nilai-nilai data dimasukkan di dalam program, maka peubah-peubah pada data tersebut perlu dideklarasikan terlebih dahulu menggunakan pernyataan INPUT. Terdapat tiga cara pemasukan data yaitu secara list, column, dan campuran list dan column. 1. Pemasukan secara list dilakukan dengan hanya menyebutkan nama-nama peubah beserta tipe peubah tersebut. Tipe peubah dianggap: (1) numerik bila setelah peubah tidak terdapat karakter khusus lain, (2) teks bila terdapat karakter $ setelah nama peubah. Pemasukan dengan cara list menuntut nilai data antar peubah dipisahkan dengan ruang kosong (bisa berupa satu atau beberapa spasi ataupun tab). 2. Pemasukan secara column dilakukan dengan memberi batasan yang baku bahwa lokasi suatu peubah berada pada kolom tertentu. Ilustrasi di slide menunjukkan bahwa peubah nama mengambil input pada kolom ke-17 hingga 41, umur pada kolom 1 dan 2, dst. Pemasukan dengan cara demikian tidak memerlukan pemisahan ruang kosong antar nilai. Cara ini biasa ditempuh bila nilai data mengandung unsur spasi seperti misalkan nama orang yang terdiri dari lebih dari satu suku kata. 3. Pemasukan campuran antara list dan column dipilih bila diinginkan untuk mendapatkan fleksibilitas yang disediakan kedua cara pemasukan data tersebut. Misalkan saja peubah nama dimasukkan dengan cara column sementara peubah lain dengan cara list.
37
Pernyataan INFILE digunakan bila data yang dimasukkan ke program berasal dari luar program SAS. Aturan sintaksnya adalah pernyataan INFILE diikuti dengan lokasi file data tersebut berada. Terdapat pilihan pada pernyataan ini yaitu FIRTSOBS (untuk menentukan posisi baris dimulainya pembacaan data) dan OBS (untuk menentukan berapa banyak baris pengamatan data tersebut akan dibaca).
38
Terkadang di dalam pembacaan data kita langsung menginginkan penghitungan peubah dari dari peubah yang sudah ada. Misalkan saja di samping kita membaca nilai UTS, UAS, dan Tugas pada tahapan data, kita juga menginginkan langsung dilakukan penghitungan nilai akhir. Pembuatan peubah baru ini dilakukan dengan pernyataan assignment yang pada intinya adalah nama peubah baru diikuti tanda sama dengan (=) dan dilanjutkan ekspresi numerik yang diinginkan.
39
Misalkan diinginkan untuk dilakukan penghitungan nilai x, d, dan y seperti pada slide.
40
Pernyataan pada butir [a] sebagai ilustrasi baris program untuk penghitungan x pada slide sebelumnya. Adapun untuk butir [b] sebagai ilustrasi pembuatan label peubah kategorik dan butir [c] untuk transformasi satuan peubah dari pon menjadi kg.
41
Selain untuk ekspresi numerik, pernyataan assignment dapat pula untuk ekspresi string dengan komponen-komponennya seperti pada slide. Operator || berguna untuk menyambungkan dua komponen string, sementara fungsi TRIM berguna untuk membuang spasi sedangkan LENGTH untuk menetapkan panjang peubah bertipe string.
42
Program ini memberi ilustrasi peubah nama1 dan nama2 keduanya bertipe string dengan panjang karakter maksimum 20 dan nama3 sepanjang 40 karakter. Peubah nama3 didapatkan dari penggabungan nama2 disusul nama1 yang masing-masing telah dibuang spasi yang ada pada keduanya dengan penggabungannya menggunakan pemisah karakter (,).
43
Pernyataan IF-THEN-ELSE berguna untuk keperluan pembandingan dengan aturan jika kondisi benar maka pernyataan1 yang akan dikerjakan dan bila kondisi tidak benar maka pernyataan2 yang akan dikerjakan. Kondisi tentunya berupa evaluasi yang bisa melibatkan pembandingan maupun logika. Untuk implementasi programnya, penggunaan operator pembandingan maupun logika dapat menggunakan versi teks ataupun karakter khusus. Misalkan bila pembandingan melibatkan kondisi lebih besar atau sama dengan, maka implementasi program dapat menggunakan (GE) ataupun (>=).
44
Program bagian 1 memberi ilustrasi pernyataan IF-THEN-ELSE untuk satu jenis pengerjaan bila kondisi benar atau salah, sementara program bagian 2 memberi ilustrasi bila setelah evaluasi kondisi terjadi lebih dari satu pengerjaan pernyataan yang kesemua pengerjaan ini dibatasi dengan komponen DO-END.
45
Pernyataan kondisi IF-THEN-ELSE dapat pula melibatkan kondisi yang tidak tunggal. Hal ini disiasati dengan pernyataan IF-THEN-ELSE yang berjenjang.
46
Coba Anda susun baris program untuk keperluan seperti di slide!
47
Pernyataan SET berguna untuk: (1) menetapkan satu gugus data SAS untuk dijadikan dasar pembuatan gugus data SAS baru, dan (2) menggabungkan pengamatan dari satu gugus data SAS dengan pengamatan dari gugus data SAS lain. Untuk keperluan pertama dicirikan dengan setelah pernyataan SET hanya ada satu gugus data SAS, sementara untuk keperluan kedua setelah pernyataan SET ada beberapa gugus data SAS yang disebutkan yang semua pengamatannya akan digabungkan menjadi satu gugus data SAS.
48
Pernyataan MERGE berguna untuk menggabungkan peubah-peubah dari suatu gugus data SAS dengan gugus data SAS lainnya. Penggabungan dapat dilakukan tanpa penciri tertentu ataupun dengan penciri tertentu, yang dicirikan dengan adanya pernyataan “by” dilanjutkan dengan peubah yang menjadi penciri penggabungan. Penggabungan dengan peubah penciri menuntut semua gugus data SAS yang terlibat harus diurutkan berdasarkan peubah penciri tersebut.
49
Slide tersebut memberikan ilustrasi penggabungan peubah menggunakan MERGE tanpa pernyataan by
50
Sementara program pada slide ini memberi ilustrasi penggabungan gugus data SAS dengan menggunakan peubah penciri yang ditunjukkan dengan adanya pernyataan “by”.
51
Pernyataan DO-loop berguna untuk pengerjaan proses serupa yang diulang-ulang dengan pengulangan tertentu. Aturan pengulangan ini termaktub dalam deklarasi setelah pernyataan DO. Pada bentuk umum sintaks: (1) var1 menunjukkan konstanta yang akan diulang, (2) var2 adalah nilai awal pengulangan untuk var1, (3) var3 adalah nilai akhir pengulangan, (4) pertambahan adalah besarnya perubahan var1 dari nilai terendahnya hingga nilai tertingginya. Contoh program sebelah kiri memberikan ilustrasi pemasukan peubah pon secara manual dari 0.1 hingga 20 pon dengan besar penambahan 0.1 pon, sementara program sebelah kanan akan memberikan hasil yang sama namun nilai peubah pon disusun secara otomatis menggunakan pernyataan DO. Dapat terlihat bahwa program sebelah kanan jauh lebih ringkas dibandingkan program sebelah kiri.
52
Ilustrasi pernyataan DO-loop untuk menghasilkan nilai z sebaran normal baku dari -4 hingga 4 dengan penambahan 0.2 sekaligus penghitungan nilainya pada kurva normal baku.
53
Ilustrasi lain dari pernyataan DO-loop untuk pembangkitan 40 angka acak normal(50,100).
54
Program di atas berguna untuk pembangkitan 100 bilangan acak seragam kontinu pada selang 0 hingga 1.
55
Program ini memberi ilustrasi mengenai sebaran percontohan rataan contoh berupa pembangkitan 500 rataan 40 contoh acak dari sebaran normal(50,100).
56
Secara umum aturan dasar pernyataan PROC pada tahapan prosedur adalah PROC diikuti nama prosedurnya dan penentuan gugus data SAS yang akan digunakan. Apabila tidak ada penentuan data yang digunakan, maka SAS akan menggunakan gugus data SAS terakhir yang dibuat sebelum menjalankan prosedur tersebut.
57
Prosedur PRINT berguna untuk mencetak nilai dari suatu gugus data SAS ke jendela Output. Aturan dasar sintaks dan ilustrasi bagi prosedur ini seperti tersaji di slide.
58
Prosedur ini berguna untuk penyajian statistika deskriptif dari peubah numerik. Peubah-peubah yang akan dideskripsikan dideklarasikan setelah pernyataan VAR. Jenis statistik yang akan disajikan bisa dipilih melalui options, namun bila tidak ada statistik yang dipilih di options, maka SAS akan mengeluarkan statistik standar seperti rataan, simpangan baku, banyaknya pengamatan, serta nilai terkecil dan terbesar.
59
Prosedur ini berguna untuk menyajikan deskripsi peubah numerik dengan sajian yang jauh lebih komprehensif apabila dibandingkan dengan deskripsi pada prosedur MEANS.
60
Prosedur ini berguna untuk menyajikan frekuensi peubah kategorik, baik frekuensi masing-masing peubah (melalui pernyataan TABLES peubah) ataupun frekuensi dalam bentuk tabulasi silang (melalui pernyataan TABLES peubah*peubah).
61
Proc PLOT berguna untuk sajian plot pencar (scatter plot) antara peubah Y (vertical) dan X (horizontal). 1. PLOT vertical*horizontal sajian dengan plot berupa titik. 2. PLOT vertical*horizontal =‘karakter’ sajian dengan plot berupa karakter yang ditetapkan di program. 3. PLOT vertical*horizontal =peubah sajian plot Y dan X dengan sajian dibedakan berdasarkan peubah.
62
Prosedur ini untuk pembuatan diagram batang baik sajian batang secara vertikal (VBAR) ataupun horizontal (HBAR). Tipe nilai yang disajikan dapat berupa frekuensi (FREQ), persentase (PERCENT), kumulatif frekuensi (CFREQ) ataupunn kumulatif persentase (CPERCENT).
63
Ilustrasi penggunaan PROC CHART untuk menyajikan diagram batang dari peubah pendibu.
64
Prosedur ini berguna untuk mengurutkan gugus data SAS berdasarkan peubah yang dideklarasikan di pernyataan BY. Gugus data SAS yang dideklarasikan setelah DATA dan OUT masing-masing merupakan gugus data input (yang akan diurutkan) dan output (hasil setelah diurutkan). Pengurutan secara default dilakukan secara menaik. Apabila diinginkan pengurutan secara menurun, maka sebelum peubah sebagai pengurutan menurun ini disisipkan penyataan DESCENDING.
65
Prosedur ini berguna untuk memberi label bagi suatu peubah pada gugus data SAS.
66
Pernyataan TITLE berguna untuk memberi judul pada jendela output. Apabila judul lebih dari satu baris, maka judul selain baris pertama didahului dengan TITLEn dengan n adalah urutan baris judul tersebut.
67
Materi berikut ini menyajikan PROC TTEST untuk Uji T.
68
Proc TTEST menyediakan sarana untuk pengujian dengan Uji T baik untuk satu populasi, dua populasi contoh saling bebas, dan dua populasi contoh berpasangan.
69
Mari kita mulai dengan data untuk ilustrasi. Data tersebut sebagai ilustrasi contoh dari satu populasi.
70
Program tersebut menyajikan PROC TTEST untuk pengujian hipotesis H0: = 80 lawan H1: ≠ 80. Nilai alpha berkaitan dengan tingkat kepercayaan dalam pembuatan selang kepercayaan. Di bawah program tersaji keluaran dari PROC TTEST. Bagian pertama keluaran ini menyajikan deskripsi peubah dan di bagian berikutnya sajian hasil Uji T.
71
Sebagai ilustrasi Uji T untuk pembandingan rataan dua populasi, digunakan data seperti pada ilustrasi.
72
Sementara program TTEST untuk pengujian disajikan pada slide tersebut. Pernyataan CLASS menentukan peubah yang menyediakan informasi asal populasi, dalam hal ini adalah Gender.
73
Hasil TTEST tersaji pada slide ini. Bagian awal berkaitan dengan deskripsi data masing-masing populasi. Bagian kedua berkaitan dengan hasil Uji T dengan dua versi perhitungan: (1) pooled untuk asumsi ragam kedua populasi sama besar dan (2) Satterwaithe untuk ragam kedua populasi tidak sama besar. Pemilihan mana di antara kedua cara penghitungan Uji T ini yang dipakai mengikuti hasil Uji kesamaan ragam kedua populasi yang tersaji pada bagian ketiga. Pada ilustrasi diperoleh ragam kedua populasi dapat dianggap sama sehingga Uji T versi Pooled yang digunakan yang menghasilkan kesimpulan rataan kedua tidak sama pada taraf nyata 5%.
74
Bahan kajian ini merupakan bahan kajian untuk pertemuan ketiga dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “Basic Building Blocks of Proc SQL”. Mata kuliah ini menyajikan cara manajemen data dengan SAS menggunakan prosedur SQL. Slide ini menyajikan berbagai hal dasar berkaitan dengan SQL yang disediakan di SAS lewat prosedur SQL.
Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
75
SQL merupakan singkatan dari Structured Query Language. Pengembang bahasa ini pertama kali adalah IBM di era 1970an. Semenjak itu, pada era 70-an hingga 80-an terdapat berbagai versi SQL tergantung pada database yang digarap. Karena masalah berbagai versi ini, pada tahun 1986 disusun SQL baku yang berupaya menyatukan berbagai versi SQL yang ada. Versi SQL baku pada tahun ini dikenal dengan SQL-86. Semenjak itu berbagai penyempurnaan dan pengembangan bahasa ini terus dilakukan dan versi baku terakhir adalah versi SQL-92.
76
SAS mulai memasukkan SQL ke dalam modul SAS/BASE mereka mulai versi SAS 6 berupa prosedur PROC SQL. Hal ini dilakukan untuk menjadikan orang yang terbiasa bekerja dengan database untuk juga bisa menggunakan SQL di SAS. Namun demikian, aturan main bahasa PROC SQL ini berbeda dengan aturan main bahasa SAS lainnya.
77
Struktur dasar pernyataan PROC SQL seperti tersaji di slide. 1. Dimulai dengan PROC SQL; 2. Terdapat penentuan peubah yang terpilih untuk digarap di SQL lewat pernyataan select 3. Dilanjutkan dengan gugus data SAS yang menjadi sumber data 4. Bila diperlukan penyaringan pengamatan yang diambil dapat dilakukan lewat pernyataan where 5. Group by untuk penyajian sub kelompok sesuai kolom yang ada di kata kunci ini. 6. Pernyataan antara proc sql dan quit adalah satu pernyataan sehingga semuanya diakhiri dengan satu tanda titik koma. 7. Diakhiri dengan pernyataan quit;
78
Berkaitan dengan penanganan data, SAS juga sebenarnya memiliki fitur terkait yaitu tahapan data yang pernah disinggung pada uraian sebelumnya. Berbagai penanganan data seperti: pembuatan gugus data, pembaruan nilai, penghapusan dan penambahan baris pengamatan, pembuatan peubah baru, pengurutan data, serta penggabungan gugus data, kesemuanya dapat dikerjakan baik menggunakan tahapan data maupun dengan PROC SQL (meskipun dengan terminologi yang sedikit berbeda). Kalau begitu, apa yang khusus dengan PROC SQL?
79
PROC SQL memiliki cara pandang yang berbeda terhadap data yang diolah apabila dibandingkan dengan tahapan data. Apabila tahapan data memandang gugus data baris demi barus, sementara PROC SQL memandang gugus data sebagai satu objek utuh. Karena itu, ada hal-hal tertentu yang jauh lebih mudah digarap menggunakan PROC SQL dibandingkan tahapan data.
80
SQL menyediakan beberapa fungsi yang dapat digunakan pada pernyataan select. Namun perlu diingat bahwa fungsi tersebut bekerja untuk seluruh gugus data, karena cara pandang SQL yang melihat gugus data sebagai satu obyek utuh.
81
Pada slide tersaji perbandingan terminologi untuk tiga aspek data yang di dalam SAS tiga aspek tersebut adalah gugus data, pengamatan, dan peubah.
82
Sintaks untuk pernyataan select selengkapnya seperti tersaji di slide. Lebih detil tentang masing-masing fitur akan dibahas di slide-slide berikutnya.
83
Untuk memulai pembahasan, akan digunakan subset dari gugus data SAS dengan nama file class yang tersedia di library sashelp. Subset dilakukan dengan memilih hanya yang berumur di bawah 13 tahun. Di samping program tersaji tabel dari gugus data yang dihasilkan. File hasil gugus data baru ini dinamakan dengan preteen.
84
Berbekal file preteen ini disusun satu program sederhana PROC SQL seperti di slide (program 1). Program tersebut bertujuan memilih seluruh peubah (atau kolom dalam terminologi SQL) dari gugus data (tabel dalam terminologi SQL) preteen. Program SQL ini tidak menyimpan tabel yang dihasilkan pada file tersendiri sehingga hasilnya disajikan di jendela Output seperti tersaji pada tabel di samping program. Karena tidak menyimpan ke file tersendiri, program SQL tersebut serupa dengan tahapan PROC PRINT seperti tersaji di program 2. Namun, karena tabel yang dikeluarkan PROC SQL tidak memuat nomor pengamatan, maka program yang lebih pas adalah program 3 dengan tambahan opsi NOOBS (tidak mencetak nomor pengamatan).
85
Bagaimana bila dalam pencetakan isi suatu file gugus data kita hanya menginginkan sebagian kolom yang tersaji? PROC PRINT menangani hal ini dengan pernyataan VAR diikuti peubah-peubah yang ingin disajikan, seperti tersaji di slide. Bagaimana dengan PROC SQL?
86
Untuk keperluan penyajian kolom tertentu di jendela Output, PROC SQL melakukannya dengan pernyataan select diikuti dengan kolo yang ingin disajikan. Bandingkan bedanya dengan pemilihan seluruh kolom seperti pada program sebelumnya.
87
Perlu diketahui bahwa tahapan data tidak bisa membuat suatu gugus data SAS tanpa menyimpannya dalam suatu file, sementara PROC SQL bisa menghasilkan tabel tanpa harus disimpan di suatu file khusus. Untuk keperluan penyimpanan tabel yang dihasilkan di suatu file data, PROC SQL melakukannya lewat CREATE TABLE namafile AS, dengan namafile diganti dengan nama file untuk menyimpan tabel tersebut.
88
Untuk mengambil sebagian peubah dari gugus data acuan, tahapan data melakukannya dengan pernyataan KEEP diikuti peubah-peubah yang dipilih, sementara untuk keperluan serupa PROC SQL melakukannya lewat penyebutan kolom terpilih setelah pernyataan SELECT.
89
Untuk keperluan subset kolom, tahapan data dapat melakukannya dengan membuang peubah yang tidak diinginkan menggunakan pernyataan DROP. Fitur ini tidak tersedia secara langsung di PROC SQL. Namun, untuk keperluan yang serupa PROC SQL menyediakannya lewat pernyataan CREATE TABLE, kemudian kolom yang akan dikeluarkan ditentukan lewat pernyataan DROP di CREATE TABLE ini. Perhatikan baris program berwarna merah di bagian PROC SQL sebagai ilustrasinya.
90
Untuk pembuatan peubah baru, tahapan data melakukannya secara langsung dengan menuliskan ekspresi numerik dari peubah yang baru tersebut. Adapun untuk keperluan yang sama, di PROC SQL dilakukan dengan menyisipkan formula kolom baru tersebut diikuti kata kunci AS kemudian nama kolom barus tersebut.
91
Untuk keperluan agregasi data (penghitungan ringkasan pada level pengamatan yang lebih tinggi/luas/umum dibandingkan level pengamatan yang ada), SAS menyediakan salah satunya lewat PROC SUMMARY. 1. DATA untuk penentuan sumber data penghitungan agregasi 2. VAR untuk penentuan peubah yang akan diterapkan agregasi 3. OUTPUT OUT untuk penentuan nama file data hasil agregasi 4. DROP untuk mengeluarkan kolom dari file hasil 5. Baris berikutnya menentukan jenis agregasi yang akan dihitung (MIN, MAX, dan MEAN masing-masing untuk minimum, maksimum dan rataan), diterapkan pada peubah mana yang kemudian dinamakan dengan peubah baru.
92
Untuk keperluan agregasi, PROC SQL melakukannya lewat pernyataan SELECT dilanjutkan dengan kata kunci terkait jenis agregasi yang akan dibuat diikuti kolom yang akan dikenai agregasi tersebut diikuti nama kolomm baru hasil agregasi tersebut yang dipisahkan kata kunci AS.
93
Tabel tersebut menyajikan hasil agregasi dari PROC SUMMARY dan PROC SQL.
94
Agregasi sebelumnya hanya menghasilkan satu nilai untuk seluruh pengamatan. Apabila diinginkan hasil agregasi dihitung untuk sub kelompok tertentu, PROC SUMMARY melakukannya dengan pernyataan CLASS diikuti peubah yang menjadi dasar sub kelompok tersebut.
95
Untuk keperluan agregasi per sub kelompok, PROC SQL melakukannya lewat pernyataan GROUP BY diikuti kolom yang menjadi dasar sub kelompok tersebut. Namun jangan lupa untuk menyertakan peubah dalam GROUP BY ini pada pernyataan SELECT.
96
Berikut tabel yang dihasilkan kedua cara di atas.
97
Terkadang penghitungan suatu nilai tergantung dari nilai suatu peubah tertentu. Seperti diilustrasikan di slide, akan dibuat peubah baru dengan nama trip dengan ketentuan: 1. Trip bernilai Zoo bila umur siswa 11 tahun 2. Bila tidak 11 tahun, namun perempuan, maka Trip bernilai Museum 3. Selain keduanya Trip bernilai [None] Keperluan ini dipenuhi dengan pernyataan IF-THEN-ELSE seperti pernah dibahas sebelumnya di tahapan data.
98
Untuk keperluan serupa, PROC SQL melakukannya dengan pernyataan CASE seperti tersaji di slide.
99
Tabel tersebut menyajikan hasil dengan tambahan peubah/kolom Trip.
100
Untuk keperluan penghitungan secara kondisional ini di tahapan data dapat dilakukan dengan pernyataan WHEN-OTHERWISE seperti tersaji di slide.
101
Untuk keperluan penyaringan data yang dihasilkan, tahapan data dan SQL melakukannya dengan cara yang serupa yaitu lewat pernyataan Where.
102
Selain WHERE, SQL juga memiliki fitur untuk penyaringan pengamatan yaitu menggunakan kata kunci HAVING. Perbedaannya keduanya adalah apabila WHERE proses pemeriksaan penyaringan dilakukan sebelum proses agregasi, sementara bila HAVING dilakukan setelah proses agregasi. Sebelumnya diberikan tabel yang merupakan agregasi tinggi badan untuk masingmasing kombinasi umur dan jenis kelamin. Program pada slide ini memberikan ilustrasi penyiapan dengan tahapan data.
103
Program di slide ini mengerjakan hal serupa seperti slide sebelumnya namun menggunakan PROC SQL.
104
Tabel berikut menyediakan ringkasan tinggi badan terendah dan tertinggi untuk setiap kombinasi umur dan jenis kelamin.
105
Nah, misalkan kita menginginkan untuk membatasi tabel yang dihasilkan hanya untuk kombinasi jenis kelamin dan umur dengan perbedaan tinggi badan terendah dengan tertinggi sebesar 4 inci atau lebih. Cara yang ditempuh semestinya adalah tinggi terendah dan tertinggi harus diketahui terlebih dahulu, baru kemudian pembatasan hanya perbedaan dua nilai ini yang 4 inci atau lebih yang disajikan. 1. Penghitungan tertinggi dan terendah ditempuh di deklarasi nama peubah baru yang dibuat (tallest dan shortest) MAX(height)=Tallest MIN(height)=Shortest 2. Pembatasan hanya selisih tallest dengan shortest yang 4 atau lebih yang diambil WHERE = (tallest – shortest > 4).
106
Versi PROC SQL untuk keperluan di atas, juga serupa. Langkah pertama dilakukan dengan pernyataan MAX(height) AS Tallest, dan MIN(height) AS Shortest, sementara langkah kedua dengan kata kunci HAVING (HAVING tallest – shortest > 4)
107
Untuk mengurutkan data menggunakan tahapan data dilakukan dengan PROC SORT ditambah pernyataan BY untuk deklarasi peubah yang menjadi basis pengurutan. Untuk versi SQL, hal ini dilakukan dengan kata kunci ORDER BY.
108
Berikut tabel yang dihasilkan setelah proses pengurutan berdasarkan umur siswa.
109
Fitur terakhir yang dibahas pada hal-hal dasar yang dapat dikerjakan dengan PROC SQL adalah pembuangan duplikasi pengamatan. Sebelumnya kita buat dulu data yang mengalami duplikasi. Hanya dengan mengambil umur dan jenis kelamin pada data yang kita pakai sebelumnya, kita peroleh data yang mengalami duplikasi.
110
Untuk menghilangkan pengamatan yang terjadi duplikasi, di SAS dilakukan dengan PROC SORT dengan menambah opsi NODUPRECS.
111
Sementara untuk keperluan penghilangan duplikasi baris, di PROC SQL dilakukan dengan opsi DISTINCT pada pernyataan SELECT.
112
Bahan kajian ini merupakan bahan kajian untuk pertemuan keempat dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “Basic Building Blocks of Proc SQL”. Materi sebelumnya berkisar tentang hal-hal dasar yang terdapat di PROC SQL. Materi kali ini menambah hal-hal dasar terkait PROC SQL.
Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
113
Materi sebelumnya selalu menyajikan satu konsep baik menggunakan tahapan data atau prosedur dan PROC SQL. Materi kali ini meneruskan hal-hal dasar yang dimiliki SQL.
114
Materi ini diawali dengan pembuatan data untuk keperluan ilustrasi. Data dasar masih menggunakan file user di library sashelp. Hanya saja kali ini siswa yang diambil adalah yang umurnya di atas 12 tahun.
115
Terkadang kita menginginkan untuk menggabungkan hasil ringkasan statistik data dengan beberapa detil dari data awal. Misalkan di samping siswa yang menyajikan nama dan umurnya (detil data awal), kita juga menginginkan berapa banyak siswa yang seumuran dengan siswa tersebut (ringkasan statistik dari data).
116
Untuk keperluan sebelumnya, program versi non SQL memulainya dengan mendapatkan ringkas statistik yang dibutuhkan yang dalam hal ini adalah frekeunsi mahasiswa tiap umur. Frekuensi ini dengan mudah dapat disiapkan dengan PROC FREQ dan tabel yang dihasilkan disimpan di suatu gugus data SAS. Program di slide memberikan ilustrasinya dan tabel di sampingnya adalah tabel yang dihasilkan.
117
Langkah berikutnya adalah penggabungan ringkasan frekeunsi tersebut dengan data awal. Langkah ini dimulai dengan pengurutan data awal berdasarkan umur.
118
Berikutnya baru proses penggabungan data awal yang telah diurutkan dengan data frekuensi menggunakan pernyataan MERGE dan kata kunci by. Tabel tersebut menunjukkan hasil yang diperoleh.
119
Untuk keperluan penelusuran data, tabel hasil penggabungan tadi diurutkan berdasarkan nama siswa sesuai tampilan awal data tersebut.
120
Kesemua tahapan tadi, untuk keperluan yang sama, cukup dilakukan dalam sekali tahap bila menggunakan PROC SQL. Perhatikan program SQL di atas.
121
Umumnya proses deskripsi data dilakukan dengan memperhitungkan frekuensi kemunculan nilai dari peubah yang dikenai deskripsi. Frekuensi ini dapat dipandang sebagai bobot dari nilai tersebut sehingga semakin sering suatu nilai muncul semakin besar bobot nilai tersebut. Deskripsi yang diperoleh dengan cara ini dinamakan dengan deskripsi dengan mempertimbangkan bobot (weighted descriptive statistics). Namun terkadang kita menginginkan ringkasan dihitung berdasarkan nilai unik dari peubah yang dikenai proses deskripsi tersebut tanpa memperhitungkan frekuensi kemunculan nilai tersebut (unweighted descriptive statistics).
122
Untuk ilustrasi akan digunakan deskripsi berupa rataan. PROC MEANS dapat kita gunakan untuk mendapatkan rataan terboboti dari suatu peubah seperti tersaji di slide.
123
Untuk mendapatkan rataan takterboboti, pertama tentu kita harus mengambil nilai unik dari peubah yang akan dideskripsikan. Keperluan ini dapat dipenuhi dengan PROC FREQ dan mengambil nilai peubah yang dihitung frekuensinya tanpa mengambil frekuensi peubah tersebut.
124
Selanjutnya baru kita hitung rataan dari nilai unik ini.
125
Kebutuhan penghitungan kedua tipe rataan ini dapat dipenuhi dengan mudah menggunakan PROC SQL. Penghitungan rataan terboboti dilakukan dengan fungsi mean dengan inputnya adalah langsung nama kolom yang dituju, sementara untuk rataan takterboboti dilakukan juga dengan fungsi mean namun pada inputnya terdapat kata kunci DISTINCT sebelum nama kolom yang dituju.
126
Kata kunci DISTINCT pernah kita pakai sebelumnya untuk membuang baris yang terduplikasi, sementara baru saja kita menggunakan kata kunci ini untuk menghalangi nilai yang terduplikasi untuk terpakai lebih dari sekali dalam penghitungan deskripsi data.
127
Mari kita lihat bila kita menggunakan kata kunci DISTINCT ini untuk menyelesaikan masalah sebelumnya namun dengan sudut pandang baris per baris. Perhatikan sekarang bahwa kata kunci DISTINCT mendahului fungsi MEAN. Perhatikan pula bahwa rataan yang diperoleh sama dengan rataan terboboti, padahal kita bayangkan penggunaan kata kunci DISTINCT kali ini juga akan menghasilkan rataan takterboboti. Bagaimana hal ini bisa terjadi? Mari kita lihat prosesnya di slide-slide berikutnya.
128
Mari kita lihat kolom umur yang dikenai proses rataan ini. Detil dari umur ini dapat kita peroleh dengan program seperti di slide.
129
Kolom umur pada slide sebelumnya menyajikan 12 angka umur. Penggunaan fungsi MEAN(AGE) menghasilkan satu angka rataan, yaitu rataan terboboti yang sebesar14.25. Selanjutnya kata kunci DISTINCT memeriksa berapa banyak nilai unik dari rataan ini, yang tentunya hanya menghasilkan satu nilai saja yaitu 14.25 tadi. Inilah angka yang dihasilkan PROC SQL yaitu rataan terboboti sebesar 14.25 meskipun pada awalnya dibayangkan angka rataan yang dihasilkan adalah 14.50.
130
Misalkan saja kita menginginkan mengidentifikasi kelompok(-kelompok) umur dengan frekuensi terbanyak.
131
Untuk keperluan pada slide sebelumnya, lewat cara non SQL, bisa ditempuh dengan terlebih dahulu didapatkan frekuensi tiap kelompok umur. PROC FREQ dapat membantu kita untuk keperluan ini. Tambahan opsi ORDER=FREQ membantu kita mendapatkan kelompok urut terurut berdasarkan frekuensinya sehingga penggunaan PROC SORT setelah PROC FREQ dapat dihindari.
132
Berikut adalah program yang disusun sesuai alur pikir pada slide sebelumnya. Tabel di bawah program menyajikan gugus data yang diperoleh.
133
Berikutnya kita gunakan tahapan data untuk memeriksa adanya penurunan frekuensi yang menandakan kelompok umur dengan frekuensi terbanyak telah dapat diidentifikasi. Perhatikan program dan gugus data yang diperoleh.
134
Dari program tersebut diperoleh kelompok umur dengan frekuensi terbanyak adalah kelompok umur 14 dan 15 tahun.
135
Untuk keperluan serupa, namun menggunakan SQL, dimulai dengan mendapatkan kelompok umur siswa. Perhatikan pernyataan SELECT AGE dan GROUP BY AGE pada program ini.
136
Selanjutnya tabel yang diperoleh dari PROC SQL sebelumnya disaring yang hanya memiliki frekuensi tertinggi saja. Perhatikan pernyataan HAVING many = MAX(many) pada program di atas.
137
Pernyataan HAVING many = MAX(many) pada slide sebelumnya menyaring baris yang frekuensinya sebesar frekuensi tertinggi pada kolom frekuensi. Hasil akhir diperoleh tabel yang identik dengan gugus data yang diperoleh dengan non SQL.
138
Perhatikan bahwa kita memerlukan dua PROC SQL untuk keperluan sebelumnya. Alasan di balik dua SQL ini adalah penghitungan frekuensi dengan fungsi COUNT mengharuskan kita melakukan pengelompokan untuk tiap jenis umur (dan ini dilakukan di PROC SQL pertama) sementara pemeriksaan dengan fungsi MAX mengharuskan kita melakukannya tanpa pengelompokan jenis umur (ini dilakukan pada SQL kedua). Perbedaan penerapan kedua fungsi ini (satu dengan pengelompokan lainnya tanpa pengelompokan) membuat diperlukan dua PROC SQL. Untungnya, SQL memiliki fitur untuk menggabungkan dua kebutuhan ini lewat inline view sehingga kebutuhan membuat tabel antara dapat dihindari yang pada gilirannya membuat cukup satu PROC SQL yang harus disusun.
139
1. Pada dasarnya kita ingin menyaring baris kelompok umur yang frekuensinya tertinggi namun tabel frekuensi tiap kelompok umur (berupa tabel sementara) harus ada terlebih dahulu program 1 2. Tabel frekuensi tiap kelompok umur yang bersifat sementara tadi dihasilkan dari program 2. 3. Jadi bila program 2 dapat disisipkan langsung sewaktu merujuk tabel sementara di program 1 (disisipkan pada lokasi yang ditunjukkan dengan kurung merah pada program 3), maka tidak diperlukan lagi dua PROC SQL terpisah untuk keperluan ini. 4. Perhatikan hasil penggabungan dua PROC SQL tadi seperti yang dihasilkan di program 4.
140
Secara singkat inline view melakukan praproses terlebih dahulu pada tabel rujukan awal, untuk kemudian tabel hasil praproses ini dijadikan sumber untuk pengerjaan pada level berikutnya. Perlu diingat bahwa inline view dapat bersifat tersarang sehingga sumber dari inline view dapat pula berupa inline view pula.
141
Bahan kajian ini merupakan bahan kajian untuk pertemuan kelima dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “Integrating data from multiple sources JOINS”. Pembahasan kali ini seputar integrasi data dari penggabungan berbagai sumber data. Pembahasan dimulai dengan penggunaan pernyataan JOINS.
Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
142
Dua materi SQL sebelumnya berkisar penggunaan SQL yang merujuk satu sumber tabel tertentu, padahal kemampuan SQL yang utama justru adalah ketika berhadapan dengan integrasi dari sumber tabel yang lebih dari satu. Tahapan data memiliki kemampuan yang serupa lewat pernyataan MERGE. Meskipun kemampuan PROC SQL dan MERGE mirip tapi banyak pula perbedaan keduanya. Pembahasan mengenai hal ini akan disajikan satu demi satu.
143
Satu hal awal yang perlu disadari saat bekerja dengan banyak sumber tabel adalah adanya kemungkinan duplikasi nama kolom. Pada program SQL di slide, penyebutan nma kolom name tidak memerlukan perhatian khusus karena sumber tabel yang digunakan hanya satu.
144
Hanya saja pengacuan kolom secara lebih presisi dapat dilakukan dengan penyebutan nama tabel terlebih dahulu, disusul tanda titik (.), baru nama kolom yang dimaksud.
145
Atau dapat pula menggunakan fitur alias, yaitu memilihkan nama lain bagi nama tabel plus library yang menampung tabel tersebut, sehingga penyebutan nama alias ini menggantikan nama tabel plus librarynya.
146
Pengacuan kolom dapat pula dilakukan pada kolom yang baru dibuat di dalam PROC SQL.
147
Pada program sebelumnya diinginkan untuk menerapkan kata kunci WHERE pada kolom NAME yang baru dibuat, yaitu yang berisi nama dengan semua huruf kecil. Hanya saja, PROC SQL masih mengacu pada kolom NAME awal yang masih memuat huruf kapital sehingga membuat tidak ada baris yang dimaksudkan di pernyataan WHERE. Solusinya kelihatannya berarti perlu dibuat kolom baru yang menampung nama dengan semuanya huruf kecil.
148
Program ini mencoba membuat kolom baru dengan nama kolom lowname yang menampung nama dengan semua hurufnya kecil, tapi justru pesan error muncul yang memberitahukan bahwa kolom lowname tersebut tidak ditemukan. Berarti kolom lowname belum dibuat. Kok bisa?
149
Hal ini karena evaluasi formula pada pernyataan SELECT dilakukan terakhir. Ini membuat kolom yang dibuat pada bagian ini tidak dikenali di bagian lain PROC SQL. Untungnya ada cara untuk mengatasi masalah ini: menyisipkan kata kunci CALCULATED sebelum merujuk kolom baru.
150
Hasilnya adalah program seperti di slide dengan hasilnya seperti tabel di bawahnya.
151
So we can see the essence of what the MERGE statement does: It combines data sets in a side-by-side fashion and attempts to pair observations. Missing values arise when one of the tables has fewer rows than the other. Here the result has three rows, that being the larger of the populations of the source tables. Ilustrasi pada slide tersebut memberi gambaran singkat bagaimana pernyataan MERGE bekerja, yaitu dengan menggabungkan data bersisian (menambah peubah). Nilai hilang akan diberikan apabila banyaknya baris suatu gugus data lebih sedikit dari gugus data lain yang digabungkan.
152
We have again combined the two tables horizontally, but this time the rows have been crossed to form what is called a Cartesian product. Each row in the first table is combined with each row in the second. The result has six rows, that being the product of the populations of the source tables. So, both joins and merges combine data in a side-by-side fashion, typically producing rows that are longer than those in the underlying tables. The fundamental difference is found in the way individual rows are linked. Merges pair rows, so that one row from one underlying table is combined with one row from the other underlying table. Joins cross rows, so that one row from one underlying table is combined with each row from the other underlying table. Pada slide kita melihat satu jenis JOIN yaitu CROSS JOIN yang berfungsi melakukan penyilangan baris satu tabel dengan baris dari tabel lainnya.
153
Proses penggabungan yang disinggung sebelumnya hanya menambah peubah tanpa memperhatikan baris pengamatan merupakan entitas yang sama atau tidak. Sekarang mari kita lihat bila dalam penggabungan data terdapat suatu penanda berupa peubah kunci yang mengatur pemasangan baris-baris pengamatan. Pembahasan dimulai bila isi dari peubah kunci tersebut tidak ada yang berulang. Data U1 berisi kunci A dan B sementara data U2 berisi kunci A dan C.
154
Penggabungan kedua gugus data U1 dan U2 tersebut dengan peubah kunci key mengharuskan kedua gugus data U1 dan U2 terurut berdasarkan peubah kunci key ini. Itulah kenapa yang digabungkan dalam tahapan data di atas adalah gugus data sorted1 dan sorted2 yang masing-masing merupakan versi terurut dari gugus data u1 dan u2. Sementara untuk menghasilkan tabel yang sama, PROC SQL menggunakan tipe lain dari JOIN yaitu FULL JOIN yang memiliki karakteristik menggabungkan seluruh pengamatan tabel kiri dan tabel kanan (masing-masing merupakan tabel yang disebutkan sebelum dan sesudah kata kunci FULL JOIN) berdasarkan kolom kunci yang dinyatakan pada pernyataan ON. Perhatikan bahwa dalam penggabungan ini PROC SQL tidak memerlukan tabel yang digabungkan harus terurut berdasarkan peubah kunci sehingga tabel yang diacu masih yang u1 dan u2 dan bukan yang sorted1 dan sorted2.
155
Pehatikan kembali hasil tabel dari PROC SQL. Tidak seperti MERGE yang melebur kolom kunci sehingga hanya muncul sekali, kolom kunci dari kedua tabel masih muncul pada tabel hasil dari FULL JOIN. Hal ini karena tidak ada penggabungan kedua kolom kunci menjadi satu. Hal ini dapat diatasi dengan melebur kedua kolom kunci menjadi satu lewat fungsi COALESCE.
156
Perhatikan penggunaan fungsi COALESCE untuk penggabungan kedua kolom kunci dari kedua tabel. Tabel pada slide menyajikan hasil yang diperoleh. Alih-alih mendapatkan satu kolom hasil peleburan kedua kolom kunci pada tabel yang diperoleh, kita malah mendapati kedua kolom kunci masih muncul ditambah kolom baru hasil penggabungan keduanya lewat fungsi COALESCE. Bagaimana bila tabel hasil tersebut kita simpan dalam satu file?
157
Program pada slide menyediakan ilustrasi penyimpanan tabel hasil penggabungan ke dalam satu file sementara tabel di sebelah program adalah tabel yang diperoleh. Sekilas masalah terselesaikan. Tapi coba lihat apa yang SAS munculkan di jendela log setelah program tersebut dijalankan.
158
Di dalam jendela log muncul dua peringatan karena terjadi penggandaan dua kali kolom kunci. Terus bagaimana solusinya?
159
Untuk menghindari peringatan pada jendela log tersebut, solusinya adalah pada pernyataan SELECT kita tetapkan kolom mana yang akan kita simpan pada file yang akan dibuat. Program tersebut menyebutkan kolom yang terpilih untuk disimpan adalah: (1) kolom key versi penggabungan menggunakan fungsi COALESCE, (2) kolom value1 dari tabel u1, dan (3) kolom value2 dari tabel u2.
160
Sebelumnya kita telah melihat FULL JOIN yang menggabungkan baris tabel kiri dan tabel kanan. Selain FULL JOIN, SAS SQL juga menyediakan LEFT JOIN yang menambah kolom dari tabel kanan tapi mempertahankan susunan baris tetap sama dengan tabel kiri, sementara RIGHT JOIN kebalikan dari LEFT JOIN. Perhatikan ilustrasinya pada slide tersebut.
161
Secara program, LEFT JOIN dan RIGHT JOIN serupa dengan FULL JOIN. Adapun untuk versi non SQL menggunakan MERGE, kedua tipe penggabungan LEFT dan RIGHT JOIN ini diperoleh dengan menambah opsi IN dan pernyataan IF pada tahapan data sebagaimana tersaji di slide.
162
Satu lagi tipe JOIN di SQL adalah INNER JOIN yaitu pada tabel yang diperoleh hanya mempertahankan pengamatan yang ada di tabel kiri maupun tabel kanan sesuai kolom kunci yang digunakan. Versi non SQL untuk keperluan yang sama masih menggunakan opsi IN dan IF namun sekarang melibatkan kedua tabel.
163
Pada pembahasan sebelumnya penggabungan melibatkan kolom kunci yang tidak ada nilai yang berulang. Bagaimana bila pada kolom kunci terdapat pengulangan? Perhatikan gugus data M1 dan M2 yang akan kita jadikan ilustrasi pada proses penggabungan ini.
164
Perhatikan diagram di atas untuk ilustrasi hasil INNER JOIN versi non SQL plus adanya peubah kunci dengan pengulangan nilai. Gugus data gabungan yang diperoleh hanya memuat pengamatan kunci A karena hanya A inilah yang ada di gugus data M1 dan M2. Selain itu, karena terjadi pengulangan nilai pada peubah kunci, peubah Value1 baris pertama dan kedua mengambil dari gugus data M1, sementara baris ketiganya mengulang nilai pada baris kedua.
165
Sementara diagram ini memberikan gambaran INNER JOIN dengan pengulangan nilai pada kolom kunci. Hasilnya adalah hanya pengamatan A yang ada di tabel gabungan dan barisnya merupakan kombinasi dari kedua baris di tabel kiri dan ketiga baris di tabel kanan (serupa dengan CROSS JOIN pada pembahasan sebelumnya).
166
Perhatikan pada tabel sebelumnya, kedua kata kunci masih muncul karena kita tidak secara khusus menentukan kolom yang akan dipertahankan. Masih ingat dengan kondisi serupa pada pembahasan sebelumnya sewaktu menyinggung fungsi COALESCE bukan? Program di slide ini tidak menggunakan fungsi COALESCE karena penggabungan yang digunakan adalah INNER JOIN sehingga kolom kunci yang dipertahankan pada tabel hasil bisa mengambil salah satu tabel. Pada program di slide ini dipilih kolom kunci dari tabel kiri.
167
Sekarang bagaimana bila pengulangan nilai pada kolom kunci hanya terjadi pada salah satu tabel? Perhatikan ilustrasinya pada slide ini. Gugus data yang diperoleh tidak menyertakan pengamatan B dan C. Nilai Value2 mempertahankan tiga baris yang ada di gugus data M2, sementara nilai pada Value1 baris kedua dan ketiga mengulang yang ada di baris pertama (ingat proses serupa sewaktu baris ketiga mengulang baris kedua pada pembahasan sebelumnya di slide 24).
168
Sekarang untuk keperluan yang sama kita gunakan PROC SQL. Kita peroleh tabel gabungan yang sama dengan gugus data versi non SQL. Hanya saja prosesnya sebenarnya berbeda. Bahwa setelah pengamatan B dan C disisihkan, satu baris Value1 kemudian disilangkan dengan tiga baris Value2 sehingga diperoleh tiga baris hasil penggabungan. Jadi tiga baris Value1 pada tabel penggabungan diperoleh dari penyilangan dengan tiga baris Value2 bukan baris kedua dan ketiga mengulang yang ada di baris pertama seperti yang terjadi di MERGE.
169
Bila INNER JOIN hanya mempertahankan pengamatan yang ada di kedua tabel sesuai kolom kunci, maka OUTER JOIN menggabungkan seluruh baris yang ada di tabel kiri dan kanan. Kita telah bertemu dengan semua versi OUTER JOIN yaitu: FULL, LEFt dan RIGHT JOIN. Sekarang kita lihat apa yang mereka hasilkan ketika terjadi pengulangan nilai pada salah satu kolom kunci. Program di atas menggabungkan secara FULL JOIN tabel U1 yang tanpa pengulangan nilai dengan tabel M2 yang terdapat pengulangan nilai. Hasilnya adalah untuk baris A penggabungan berprinsip seperti INNER JOIN sementara untuk baris B dan C ditambahkan biasa.
170
Sementara untuk versi non SQL-nya juga serupa bahwa untuk pengamatan A mengambil prinsip seperti sewaktu “INNER JOIN” bagi versi non SQL sementara pengamatan B dan C ditambahkan biasa. Karena untuk pengamatan yang berulang, yaitu pengamatan A, kedua cara SQL dan non SQL ini haslinya sama, maka tabel gabungannya juga sama.
171
Sekarang mari kita lihat bila proses penggabungan melibatkan 3 atau lebih sumber data. Untuk versi non SQL tahapan data dengan MERGE melakukannya dengan mudah yaitu tinggal mendeklarasikan semua gugus data yang akan digabung setelah pernyataan MERGE. Bila menginginkan ada peubah kunci dalam penggabungan ini, tinggal gunakan pernyataan BY.
172
Sekarang mari kita lihat versi SQL. Prinsip penggabungan tabel di SQL adalah antar dua tabel saja, sehingga untuk tiga tabel penggabungan dilakukan pada dua tabel terlebih dahulu baru kemudian hasilnya digabung dengan tabel ketiga. Program di atas menyajikan ilustrasi penggabungan tiga tabel sementara tabel di bawah program adalah tabel hasil penggabungan. Kita lihat tabel penggabungan versi SQL berbeda dengan non SQL. Hal ini disebabkan versi SQL menggunakan JOIN yang bila tidak disebutkan versinya secara default menjadi INNER JOIN sehingga hasil gabungan ketiganya hanya menyisakan baris A yang ada di ketiga tabel.
173
Proses penggabungan menggunakan peubah kunci dapat melibatkan lebih dari satu peubah kunci. Penyebutan semua peubah kunci pada versi non SQL dilakukan setelah pernyataan BY, sementara untuk versi SQL dilakukan setelah pernyataan ON menggunakan penghubung AND.
174
Natural join merupakan fitur di PROC SQL untuk memudahkan proses penggabungan tabel tanpa perlu menggunakan sintaks khusus penggabungan termasuk meniadakan deklarasi kolom yang menjadi kunci. Idenya adalah cukup kita sebutkan tabel apa yang akan digabungkan kemudian kolom bernama sama dari kedua tabel tersebut otomatis menjadi kolom kunci. Fitur ini juga termasuk penggabungan kolom kunci menjadi satu kolom sendiri sekaligus menghapus kolom-kolom kunci tersebut dari tabel hasil gabungan.
175
Perhatikan ilustrasi natural join berikut ini. Program bagian kiri menyajikan penggabungan FULL JOIN menggunakan sintaks-sintaks khusus terkait penggabungan tabel seperti fungsi COALESCE dan kata kunci ON. Adapun program di sebelah kanan adalah ilustrasi penggabungan natural join tersebut. Pada program sebelah kanan ini, cukup kita sebutkan dua tabel yang akan digabung secara NATURAL FULL JOIN tanpa perlu menggunakan fungsi COALESCE dan kata kunci ON ini.
176
Tipe JOIN lain adalah IMPLICIT JOIN yang khusus untuk INNER JOIN. Alih-alih penggabungan sepasang-sepasang tabel, fitur ini langsung menyebutkan tabel yang akan digabung dengan dipisahkan koma. Pernyataan ON tidak diperlukan namun digantikan dengan pernyataan WHERE yang melibatkan AND bila diperlukan.
177
Program sebelah kiri menyajikan PROC SQL untuk penggabungan tiga tabel yaitu: u1, m1, dan u2 menggunakan kolom kunci key. Sementara program sebelah kanan menyajikan implicit joins untuk keperluan yang sama. Perhatikan pada program sebelah kanan ini, pada pernyataan FROM kita hanya menyebutkan tiga tabel yang akan digabung sementara deklarasi kolom yang menjadi kolom kunci dilakukan menggunakan kata kunci WHERE.
178
Dalam pembahasan sebelumnya penggabungan dua atau lebih sumber tabel selalu menggunakan permbandingan antar kolom kunci menggunakan sama dengan (=). Tahapan data dengan MERGE hanya menyediakan penggabungan dengan pembandingan “=“, sementara PROC SQL menyediakan penggabungan dengan pembandingan yang lebih lentur karena juga menyediakan pembandingan selain “=“. Program di slide menyajikan pembandingan dengan GT (greater than atau >).
179
Bahan kajian ini merupakan bahan kajian untuk pertemuan keenam dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “Integrating data from multiple sources SUBQUERIES”. Mari kita lanjutkan materi penggabungan yang melibatkan banyak tabel sumber. Kali ini kita akan lihat konsep subquery di PROC SQL.
Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
180
Gambaran lebih jauh tentang subquery dilakukan lewat gugus data SAS “class” pada library sashelp yang juga menjadi sumber gugus data untuk ilustrasi pada materi PROC SQL sebelumnya. Kali ini kita akan mengambil seluruh siswi pada data tersebut. Perhatikan program pada slide ini untuk penyiapan data ilustrasi ini.
181
Kemudian kita buat gugus data baru yang berisikan informasi 4 siswi seperti pada program. Gugus data kedua ini dirancang mengandung satu baris yang sama dengan gugus data pertama, yaitu Jane berumur 12 tahun. Subquery pada materi ini pada intinya nantinya akan mencari satu baris ini dan menjadikannya tabel yang dihasilkan oleh subquery.
182
Di dalam PROC SQL, kata kunci yang digunakan berkaitan dengan subquery adalah: EXISTS, IN, ANY, dan ALL. Slide berikutnya menjelaskan detil masing-masing cara kerja dari kata kunci ini. Penerapan pada data ilustrasi, semua kata kunci ini akan menghasilkan satu baris sebagai subquery yaitu Jane yang berumur 12 tahun tadi. Tentunya untuk mencapai tujuan ini masing-masing kata kunci memiliki cara kerja dan sintaks sendiri-sendiri namun pada akhirnya semua akan menghasilkan tabel hasil yang sama yaitu yang berisi satu baris ini saja.
183
Secara harfiah exist berarti ada. Di dalam PROC SQL, kata kunci EXISTS berkaitan dengan subquery, di mana bila ada satu atau lebih baris dari tabel A ada di tabel B maka EXISTS akan mengembalikan hasil namun bila tidak ada satupun baris dari tabel A tidak ditemukan di tabel B maka EXISTS tidak akan mengembalikan hasil. Program tersebut berupaya mengambil baris(-baris) di tabel MOREGIRLS yang juga ditemukan di tabel CLASSGIRLS. Dari pemeriksaan ditemukan satu baris yaitu siswi bernama Jane berumur 12 tahun. Dengan demikian, baris inilah yang dikembalikan oleh EXISTS.
184
Kata kunci IN memiliki prinsip yang serupa dengan kata kunci EXISTS, namun menawarkan kemudahan di dalam penggunaan pernyataan WHERE sewaktu merujuk tabel kedua. Program di atas memberi ilustrasi penggunaan kata kunci IN yang menghasilkan hasil yang serupa dengan program untuk kata kunci EXISTS sebelumnya. Dapat diperhatikan pada program bahwa kata kunci WHERE dalam pembandingan baris kedua tabel menjadi tidak ada.
185
Kata kunci ini intinya mencari sembarang (any) baris dari tabel pertama yang ditemukan pada tabel kedua.
186
Dengan sedikit modifikasi pada program, kita dapat memanfaatkan kata kunci ALL untuk menghasilkan subquery yang sama dengan ketiga kata kunci sebelumnya.
187
Program sebelumnya menyajikan penggunaan EXISTS, IN, ANY, dan ALL sebagai bagian pada pernyataan WHERE. Meskipun begitu, subquery dapat disusun di mana saja di program, tanpa mengkaitkan dengan pernyataan WHERE, selama hal tersebut dimungkinkan.
188
Program berikut ini menyajikan PROC SQL untuk menghasilkan subquery menggunakan kata kunci IN namun tidak lewat pernyataan WHERE. Bagaimana hasil subquery tersebut diperoleh?
189
Karena hanya “Jane” yang ada di FNAME kedua tabel, maka pada tabel MOREGIRLS baris Jane berisi 1 dan lainnya berisi 0. Karena ada pengurutan, maka Jane berada pada posisi di bawah, sedangkan tiga baris lainnya terurut sesuai abjad dan terletak sebelum Jane. Setelah proses pengurutan ini, kolom (virtual) berisi 0 dan 1 tadi dibuang dan hasilnya seperti kita lihat pada slide sebelumnya.
190
Fitur kata kunci sebelumnya (EXISTS, IN, ANY, dan ALL) digunakan khusus untuk menghasilkan subquery dengan banyaknya baris hasil tergantung hasil fungsi pembandingan yang dilakukan. Namun, subquery dapat pula dilakukan tanpa 4 kata kunci khusus ini menggunakan ekspresi skalar dengan hanya satu baris hasil.
191
Program tersebut kira-kira menginginkan di samping baris tabel MOREGIRLS tersaji kolom tambahan yang berisikan nama-nama siswa dari tabel CLASSGIRLS yang berumur sama. Susan, siswa pertama pada tabel MOREGIRLS tidak memiliki siswa yang seumuran dari tabel CLASSGIRLS. Berikutnya, Jane memiliki tepat satu siswa yang berumur sama yaitu Louise. Selanjutnya, Abigail memiliki 2 siswa yang berumur sama. Namun karena ekspresi pada program ini adalah skalar sehingga hanya bisa mengembalikan satu hasil saja, maka timbul pesan ERROR dan eksekusi program terhenti sehingga baris setelah Abigail belum diperiksa hasilnya.
192
Berbeda bila yang kita ambil adalah informasi banyaknya siswa yang berumuran sama. Karena hanya menghasilkan satu angka maka tidak terjadi ERROR pada eksekusi program tersebut.
193
Bahan kajian ini merupakan bahan kajian untuk pertemuan ketujuh dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah “Integrating data from multiple sources SET OPERATORS”. Mari kita lanjutkan pembahasan mengenai integrasi data dari berbagai sumber. Kali ini kita akan menggunakan operator yang bekerja berbasis gugus.
Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor. Kedua penyusun masing-masing dapat dihubungi melalui email pada alamat [email protected] dan [email protected].
194
Operator gugus yang dibicarakan pada materi kali ini secara konsep mengambil yang disediakan di ilmu matematika yang berkenaan dengan gugus. Di dalam PROC SQL tersedia empat operator berbasis gugus yaitu: UNION (gabungan), INTERSECT (irisan), EXCEPT (selain), dan OUTER UNION. Selain itu terdapat dua opsi yaitu: ALL dan CORRESPONDING yang mempengaruhi perilaku dari operator-operator tersebut. Kita lihat detilnya setelah ini.
195
Perbedaan utama antara prinsip JOINS dan Operator gugus ini adalah bila JOINS berkenaan dengan penggabungan kolom maka operator gugus menggabungkan baris. Program pada slide ini memberi ilustrasi perbedaan kedua fitur ini.
196
Secara sintaks program perbedaan JOINS dan operator gugus adalah: 1. UNION disisipkan di antara dua pernyataan SELECT masing-masing dengan subpernyataan FROM. Dengan demikian, operator gugus bekerja pada hasil dari dua pernyataan SELECT. 2. JOINS diterapkan di dalam pernyataan FROM dari sebuah pernyataan SELECT. Secara hasil perbedaan keduanya adalah: 1. JOINS pada dasarnya adalah pengaturan berbasis baris dan menggabungkan kolom. 2. Operator gugus mengatur kolom dan menggabungkan baris.
197
Perilaku dari empat operator gugus tergantung dari karakterisktik data yang diolah dan opsi yang digunakan di dalam program.
198
Sebagai ilustrasi digunakan dua tabel data dengan komposisi kolom yang sama namun dengan urutan kolom berbeda. Selain itu, urutan baris juga sedikit diacak sehingga baris juga tidak berurut berdasarkan kolom tertentu.
199
Penggunaan operator UNION disajikan di slide ini. Pengertian dasar UNION adalah menggabungkan unsur-unsur dari gugus A dan dan gugus B ke dalam satu gugus baru. Penggunaan UNION pada kedua data ilustrasi menghasilkan seluruh baris di tabel pertama dan kedua digabungkan ke dalam satu tabel baru. Baris-baris yang ditemukan baik di tabel pertama dan kedua otomatis hanya diambil salah satu sehingga di tabel gabungan tidak terjadi penggandaan baris.
200
Sekarang perhatikan penggunaan operator INTERSECT yang bermakna harfiah irisan. Penerapan operator ini pada kedua tabel ilustrasi menghasilkan tabel baru yang berisi baris-baris yang ditemukan baik pada tabel pertama maupun kedua.
201
Adapun operator EXCEPT bekerja dengan mengambil baris yang terdapat di tabel pertama dan tidak ditemukan di tabel kedua.
202
Berbeda dengan UNION yang di samping menggabungkan juga menata baris dan kolom tabel hasil penggabungan, OUTER UNION menggabungkan kedua tabel input menjadi satu tabel hasil tanpa pengaturan baris dan kolom hasil penggabungan. Perhatikan hasil penggabungan pada slide di atas. Kita mendapati terdapat dua kolom bernama FName dan Age karena keduanya ditemukan di kedua tabel input. Baris pada tabel penggabungan pun tidak ada penataan ulang. Program pada slide ini tidak berupaya menyimpan tabel hasil gabungan ini sehingga pengulangan nama kolom tidak menjadi masalah, berbeda bila tabel hasil gabungan ini akan disimpan dalam satu file. Masih ingat dengan masalah yang sama yang kita dapati pada materi JOINS bukan?
203
Kita lihat pada slide ini bahwa penyimpanan tabel hasil gabungan pada suatu file menimbulkan masalah karena terjadi penggandaan nama kolom. SAS hanya menyimpan kolom yang ditemukan pertama dan mengabaikan kolom bernama sama yang ditemukan berikutnya. Namun pada file semua baris masih dipertahankan sehingga kita mendapati nilai hilang pada sebagian baris di bagian bawah.
204
Tidak semua fitur operator gugus dari PROC SQL memiliki padanan di tahapan data dan di beberapa kasus padanan di tahapan data ini membutuhkan program yang berliku atau dapat dilakukan pada kondisi yang terbatas. Namun, operator OUTER UNION, dengan opsi CORRESPONDING, memiliki padanan langsung dengan tahapan data.
205
Program pada slide ini memberi gambaran penggabungan baris dari dua sumber tabel dengan komposisi kolom yang sedikit berbeda. Penggabungan ini dapat dengan mudah dilakukan dengan tahapan data menggunakan pernyataan SET, sementara versi SQL digunakan operator OUTER UNION dengan opsi CORRESPONDING.
206
Interleaving menggabungkan baris namun diatur dan diurutkan menurut karakter kunci tertentu. Pada program di atas, karakter kunci tersebut adalah kolom AGE. Versi tahapan melakukan ini dengan pernyataan SET dilanjutkan dengan BY AGE, sementara versi SQL digunakan operator OUTER UNION dan opsi CORRESPONDING serta ORDER BY AGE.
207
Bagaimana bila dalam penggabungan, suatu kolom dideklarasikan dengan tipe yang berbeda antar tabel? Bila penggabungan dilakukan dengan tahapan data, maka file data tetap dibuat namun tidak ada pengamatan yang tersimpan, sementara bila penggabungan dilakukan dengan SQL maka bahkan file data tidak berhasil disimpan. Hal ini menandakan operator gugus mengharuskan kolom yang digabungkan harus memiliki tipe yang sama.
208
Hanya operator OUTER UNION yang memiliki padanan langsung dengan tahapan data. Selain itu, operator ini memiliki perbedaan lebih banyak dibandingkan tiga operator gugus lainnya dibandingkan perbedaan antar tiga operator gugus tersebut. Perilaku operator gugus dapat dijelaskan lewat cara empat pertanyaan ini dijawab: 1. Bagaimana kolom digabungkan? 2. Apa yang dilakukan pada kolom yang tidak digabungkan? 3. Bagaimana baris ditambahkan? 4. Apakah baris yang berganda dimungkinkan pada tabel gabungan?
209
Berkaitan dengan pertanyaan nomor 3 (Bagaimana baris ditambahkan?): - OUTER UNION dan UNION memiliki proses yang sama - INTERSECT dan EXCEPT memiliki proses yang berbeda. Berkaitan dengan 3 pertanyaan lain: -OUTER UNION memiliki cara sendiri -Tiga operator lain bekerja dengan cara yang serupa.
210
Dalam kaitan dengan pengaturan kolom, Bila opsi CORRESPONDING digunakan maka: - OUTER UNION mengatur kolom sesuai dengan nama kolom - Tiga operator lain juga memiliki fitur semacam ini. Bila opsi CORRESPONDING tidak digunakan maka: - OUTER UNION tidak mengatur kolom - tiga operator lain melakukan pengaturan berdasarkan posisi kolom.
211
Berkaitan dengan kolom yang tidak memiliki padanan: - Bila OUTER UNION yang digunakan maka kolom tersebut tetap digabungkan ke dalam tabel gabungan - Bila UNION, INTERSECT, dan EXCEPT yang digunakan maka tergantung opsi CORRESPONDING: - bila opsi ini digunakan, maka kolom yang tidak memiliki padanan tidak ikut digabung - bila opsi ini tidak digunakan, maka kolom yang tidak memiliki padanan akan digabung.
212
Berkaitan dengan penggabungan baris: - Untuk UNION (demikian pula untuk OUTER UNION) baris dari kedua tabel digabung - Untuk INTERSECT, hanya baris yang ditemukan di kedua tabel yang digabung - Untuk EXCEPT, hanya baris yang ditemukan di tabel pertama saja yang digabung
213
Berkaitan dengan baris yang berganda, - OUTER UNION tetap mempertahankan semua baris termasuk baris yang berganda - operator lainnya secara default membuang baris yang berganda (meskipun dengan opsi ALL semua baris bisa tetap dipertahankan).
214
Program menampilkan ilustrasi PROC SQL dengan operator UNION dan kata kunci CORRESPONDING dan opsi ALL. Karena kata kunci CORRESPONDING, maka kolom yang tidak ditemukan di kedua tabel tidak disertakan dalam penggabungan serta kolom AGE tetap dapat digabungkan meskipun tidak pada urutan kolom yang sama (kolom ketiga di tabel pertama dan kolom kedua di kolom kedua). Berikutnya, karena opsi ALL, semua baris termasuk yang terjadi duplikasi tetap digabungkan.
215
Tanpa CORRESPONDING, penggabungan kolom hanya berdasarkan urutan kolom, tidak berdasarkan kesamaan nama kolom. Dengan opsi ALL, semua baris tetap dipertahankan pada tabel gabungan.
216
Tanpa menggunakan kata kunci CORRESPONDING, pengaturan sesuai nama kolom tetap dapat dilakukan seperti dicontohkan pada program di atas. Prinsipnya adalah kesamaan urutan penyebutan kolom yang akan digabung.
217
Untuk memberi ilustrasi bagaimana penggabungan baris dilakukan, dicontohkan kedua gugus data berikut.
218
Dengan opsi ALL, PROC SQL menggabungkan semua baris dari kedua sumber tabel meskipun ada baris yang terjadi duplikasi.
219
Bila opsi ALL tidak digunakan, maka baris yang terjadi duplikasi otomatis akan terhapus.
220
Sekarang kita lihat cara kerja operator INTERSECT. - Dalam hal penggabungan kolom, operator ini bekerja persis seperti operator UNION, - Sementara dalam hal penggabungan baris, operator ini hanya mengambil baris yang ditemukan di kedua kolom. - Selain itu, operator ini bersifat komutatif, posisi input tidak mempengaruhi hasil.
221
Program tersebut menyajikan ilustrasi operator INTERSECT dengan opsi ALL. Hal ini berarti dimungkinkan baris yang terduplikasi tetap digabungkan. Namun aturannya adalah bila F dan S masing-masing adalah banyaknya baris di tabel pertama dan kedua, maka banyaknya baris pada tabel gabungan adalah sebanyak min(F,S).
222
Tanpa opsi ALL, maka baris yang terjadi duplikasi hanya dipilih satu.
223
Dalam hal penggabungan kolom, EXCEPT juga bertindak seperti UNION. Namun dalam hal penggabungan baris, operator ini hanya mengambil baris yang ada di tabel pertama. Karena itu, tidak seperti UNION dan INTERSECT, operator EXCEPT tidak bersifat komutatif (pengubahan tabel input bisa mengubah hasil tabel gabungan).
224
Dengan menggunakan opsi ALL, maka penggabungan baris yang terjadi duplikasi adalah sbb. Bila F dan S masing-masing menunjukkan banyak baris yang terjadi duplikasi di tabel pertama dan kedua, maka banyaknya baris yang tersaji di tabel gabungan adalah min(0,F-S). Karena baris aa tidak muncul di tabel gabungan.
225
The duplicates are removed before rows from the two sources are paired and canceled. Tanpa menggunakan opsi ALL, maka baris yang terjadi duplikasi hanya dipilih satu, selanjutnya proses penggabungan menggunakan prinsip min(0,F-S) pada slide sebelumnya.
226
Bahan kajian ini merupakan bahan kajian untuk pertemuan kedelapan dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah Menyiapkan Data untuk Analisis Statistika. Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor.
Dalam proses analisis data di suatu perusahaan, umumnya ada tiga divisi yang terlibat. Yang pertama adalah divisi yang berkaitan dengan bisnis perusahaan yang memerlukan analisis untuk membuat berbagai keputusan, atau memerlukan analisis untuk mengetahui kondisi dari pasar. Yang kedua adalah divisi yang terkait dengan IT dan database. Mereka adalah yang bertanggung jawab dalam menyimpan data-data perusahaan baik internal maupun eksternal. Dan yang ketiga adalah divisi analysis, yang berisi orang-orang dengan kemampuan statistika dan analisis data.
228
Peran di Perusahaan Di bidang marketing, Joka mungkin adalah manajer promosi atau manager produk dsb yang bertanggung jawab pada segmentasi konsumen. Di bagian penjualan (sales), Joko mungkin adalah adalah pimpinan tim penjualan yang bertanggung jawab pada persiapan program penjualan Di bagian statistik medis, Joko adalah doktor medis yang ingin hasil percobaan medisnya dianalisis. Biasanya dia tertarik pada informasi p-value untuk melihat faktor apa yang signifikan
229
Posisi DIAN di berbagai perusahaan antara lain: -Jika di bagian bisnis, dia membantu menghasilkan berbagai analisis untuk kepentingan bisnis -Jika di bagian IT, para statistisi biasanya melayani departemen-departemen lain -Bisa juga dia ada di bagian khusus departemen analytics -Sebagai konsultan yang membantu analisis berbagai perusahaan dan organisasi
230
Orang seperti ini biasanya menerima order atau request dari bagian bisnis yang umumnya waktunya mepet karena mereka minta disiapkan data sesegera mungkin. Ini yang sering menyebabkan konflik antar mereka karena orang-orang bisnis maunya segera dan segera. Dedi sering berpikir bahwa orang lain gak pernah paham bagaimana susahnya memperoleh informasi yang mereka perlukan karena tidak sekedar membuat tabel, tapi juga proses-proses lain yang kadang makan banyak waktu.
231
Segitiga yang terbentuk antara statistician, business analyst, dan IT di suatu perusahaan bisa jadi saling berseberangan. Perlu kemampuan manajerial dan pemahaman masing-masing bagian agar pekerjaan dapat berjalan dengan baik. Kondisi umum statistician: Dituntut memberikan hasil yang tepat dan bermanfaat, senang kalau tersedia banyak data yang bisa digunakan dan diotak-atik, apalagi data tersebut sudah siap dianalisis, kurang menyukai data-data yang aneh, bolong, tidak lengkap, dsb. Selalu berpikir, kalau bisa saya saja yang menyiapkan data. Kondisi umum business analyst Biasanya dikejar-kejar deadline, maunya cepet, hasil analisis dijelaskan dengan bahasa yang sederhana, gak mau pusing dengan hal-hal teknis di data, gak suka ada orang bilang kalau requestnya terlalu rumit dan butuh waktu untuk dikerjakan Kondisi umum IT and Data Expert Bertanggung jawab pada penyimpanan dan ekstraksi data dari berbagai sumber, suka mengotak-atik bagaimana beberapa proses dapat dijalankan secara otomatis, kurang senang dengan permintaan data yang ekstraksinya butuh waktu lama, dan tidak terlalu paham bagaimana data-data itu nantinya akan digunakan.
232
Bentuk data yang menjadi sumber dari data yang akan disiapkan bisa jadi memiliki berbagai bentuk. Sebagian barangkali berupa file-file yang masih dalam bentuk file teks (TXT atau CSV), sebagian mungkin sudah berupa spreadsheet dengan berbagai variasinya (misalnya XLS, XLSX), atau file-file database (DBF, MDB). Untuk dapat memiliki data yang diinginkan dalam proses analisis, data-data tersebut perlu disusun sehingga lebih mudah dikelola. Khusus untuk file yang berupa database, perlu diperiksa apakah tabel-tabel yang ada di dalamnya sudah dinormalisasi. Normalisasi antara lain memastikan bahwa satu buah variabel hanya ada di satu tabel saja dan tidak berulang-ulang di tabel yang lain.
233
The following are examples of analysis subjects: Persons: Depending on the domain of the analysis, the analysis subjects have more specific names such as patients in medical statistics, customers in marketing analytics, or applicants in credit scoring. Animals: Piglets, for example, are analyzed in feeding experiments; rats are analyzed in pharmaceutical experiments. Parts of the body system: In medical research analysis subjects can also be parts of the body system such as arms (the left arm compared to the right arm), shoulders, or hips. Note that from a statistical point of view, the validity of the assumptions of the respective analysis methods has to be checked if dependent observations per person are used in the analysis. Things: Such as cash machines in cash demand prediction, cars in quality control in the automotive industry, or products in product analysis. Legal entities: Such as companies, contracts, accounts, and applications. Regions or plots in agricultural studies, or reservoirs in the maturity prediction of fields in the oil and gas industry. Analysis subjects are the heart of each analysis because their attributes are measured, processed, and analyzed. In deductive (inferential) statistics the features of the analysis subjects in the sample are used to infer the properties of the analysis subjects of the population. Note that we use feature and attribute interchangeably here.
234
Coba perhatikan tabel data PODES yang diperoleh dari BPS Jika subjek analisis adalah DESA/KELURAHAN, maka data tersebut memiliki satu baris untuk satu subjek. Namun jika subjek analisisya adalah KABUPATEN/KOTA, maka data tersebut memiliki beberapa baris untuk satu subjek. Demikian juga dengan subjek analisis yang berupa kelompok desa seperti KECAMATAN dan PROPINSI.
235
Data pengamatan berulang diperoleh karena adanya pengamatan berulang (repeated measurements) jelas merupakan data dengan beberapa baris untuk satu objek jika disimpan dalam format penambahan baris setiap perulangan amatan
236
237
238
Dalam beberapa pertemuan ke depan akan digunakan data yang disimpan pada file DATA DMS 01.xlsx File tersebut berisi data yang merupakan sebagian data hasil survei energi rumah tangga. Hanya bagian penggunaan listrik untuk penerangan yang diberikan. Nama responden sengaja dihapus dari data untuk keperluan confidentiality. Pada data tersebut teradapat empat worksheet/tabel yaitu -A.identitas -B.karakter -C.penerangan -D.pengetahuan Kuesioner yang digunakan tersedia pada folder data.
239
Ini adalah worksheet dengan data satu subjek analisis (yaitu responden rumah tangga) satu baris Variabel yang ada adalah no_kues nama_responden nama_kepala Jenis_Kelamin Usia alamat kelurahan kecamatan kabupaten propinsi id_kab id_prop telp latitude longitude kategori
240
Ini adalah worksheet dengan data satu subjek analisis (yaitu responden rumah tangga) satu baris Variabel yang ada adalah no_kues jml_penghuni jml_kk pendidikan pekerjaan pendapatan pengeluaran pengeluaran_makanan pengeluaran_nonmakanan jns_bangunan status_milik luas_bangunan luas_tanah kondisi kap_listrikPLN kap_listrikNonPLN kategori sumber jenis pembangkit_sendiri meteran_digital
241
Ini adalah worksheet dengan data satu subjek analisis (yaitu responden rumah tangga) memiliki lebih dari satu baris data karena dalam satu rumah tangga bisa terdapat beberapa jenis penerangan. Variabel yang ada adalah no_kues jml letak watt merk teknologi tahun energi hemat tiap_hari bulan penggunaan jam
242
Ini adalah worksheet dengan satu responden tercatat di banyak baris. Kolom-kolom yang ada adalah no_kues Pertanyaan Jawaban Sumber Arti1 arti2 Untuk memahami isi dari data ini termasuk kolom-kolomnya disarankan harus melihat
243
Sebelum masuk ke tahap analisis, tahapan yang harus dilakukan adalah penyiapan data dengan cara membuat datamart. Data mart adalah tabel data dimana setiap satu buah subjek analisis hanya memiliki satu buah baris dalam data. Beberapa tabel data sudah bersifat seperti itu sehingga tidak perlu dilakukan apapun. Namun demikian banyak juga tabel-tabel data yang menyimpan informasi satu subjek analisis ke dalam beberapa baris data. Sebagai contoh, dari DATA DMS 01 yang berisi empat tabel: -A.identitas satu subjek satu baris -B.karakter satu subjek satu baris -C.penerangan satu subjek banyak baris -D.pengetahuan satu subjek banyak baris
244
Transposing Here we transpose the multiple rows per subject into columns. This technique can be considered the “pure” way because as we take all data from the rows and represent them in columns. Pada kuliah di pertemuan-pertemuan berikutnya kita akan menggunakan PROC TRANSPOSE di SAS.
Aggregating Menjadikan beberapa baris informasi dari suatu subjek analisis menjadi satu: menggunakan penjumlahan, rata-rata, nilai maksimum maupun yang lainnya. Pada kuliah di pertemuan-pertemuan berikutnya kita akan menggunakan PROC TABULATE di SAS.
245
Ini adalah ilustrasi dari proses transposing. Perhatikan bahwa tabel yang di atas merupakan bentuk tabel dari dataset asal yang berisi informasi mengenai banyaknya lampu di beberapa bagian rumah dari tiga orang responden. Kegita responden memiliki nomor kuesioner 3602910401, 3602910402, dan 3602910403. Sementara itu, tabel yang di bawahnya adalah tabel data set yang baru hasil transpose. Informasi mengenai jumlah lampu yang awalnya tersusun ke bawah, sekarang tersusun ke samping. Setiap variabel adalah banyaknya lampu di ruang dapur, lampu di ruang depan, dan seterusnya.
246
Ini adalah ilustrasi dari proses aggregating. Perhatikan bahwa tabel yang di atas merupakan bentuk tabel dari dataset asal yang berisi informasi mengenai banyaknya lampu di beberapa bagian rumah dari tiga orang responden. Ketiga responden memiliki nomor kuesioner 3602910401, 3602910402, dan 3602910403. Selain itu juga ada informasi mengenai daya masing-masing lampu (watt). Kolom total watt adalah perkalian antara banyaknya lampu dengan daya (watt) Sementara itu, tabel yang di bawahnya adalah tabel data set yang baru hasil agregasi. Banyaknya lampu dan total daya lampu dari setiap responden digabungkan dengan cara menjumlahkan. Dengan demikian setiap responden sekarang hanya ada satu baris untuk setiap responden.
247
Data yang digunakan adalah file DATATRAG yang terdiri atas 13 amatan dan 5 (lima) kolom yaitu: -No Kues -jml -letak -watt -total watt
Data ini serupa dengan data yang telah ditampilkan pada slide-slide sebelumnya.
248
Transposing di SAS dapat dilakukan dengan menggunakan PROC TRANSPOSE. Sintaks dasar dari prosedur ini adalah memuat pernyataan VAR, BY, dan ID. Pernyataan BY menyebutkan variabel diskret apa yang dijadikan sebagai dasar bahwa putaran dilakukan pada setiap nilai berbeda dari variabel tersebut. Misalnya kalau disebutkan no_kues pada BY, maka proses transposing dilakukan untuk setiap nilai no_kues. Kemudian, variabel yang disebutkan pada pernyataan VAR adalah variabel yang di transpose. Terakhir, varibel pada pernyataan ID adalah variabel yang akan menjadi nama variabel pada data hasil transpose.
249
Proc Tabulate dapat digunakan untuk melakukan agregasi dengan berbagai macam cara dan banyak pilihan statistik. Pembahasan lebih rinci mengenai PROC TABULATE akan didiskusikan pada pertemuan berikutnya.
250
Setelah melakukan transpose satu objek satu baris Setelah proses agregasi menggunakan proc tabulate satu objek satu baris Variabel identitas unik dari keduanya adalah NO_KUES, sehingga pada saat penggabungan (MERGE) gunakan NO_KUES sebagai variabel penghubung.
251
Bahan kajian ini merupakan bahan kajian untuk pertemuan kesembilan dan kesepuluh dari pembelajaran mata kuliah STK 572 Manajemen Data Statistika, di Program Studi Magister Statistika Terapan. Topik dari bahan kajian ini adalah AGREGASI DATA. Bahan kajian ini disusun oleh Dr. Bagus Sartono dan Dr. Farit Mochamad Efendi, di Departemen Statistika FMIPA – Institut Pertanian Bogor.
Setiap baris pada suatu tabel di data base merupakan karakteristik dari suatu entitas/amatan. Amatan-amatan tersebut umumnya merupakan anggota dari entitas lain yang lebih besar himpunannya. Sebagai ilustrasi andaikan kita memiliki data nilai dari individu mahasiswa. Masingmasing mahasiswa tergabung dalam suatu program studi, sehingga suatu program studi merupakan entitas yang lebih besar dibandingkan individu mahasiswa dan satu program studi akan terdiri atas satu atau lebih mahasiswa (umumnya tentu lebih dari hanya satu orang). Lebih lanjut, setiap program studi berada di bawah koordinasi suatu departemen, dan suatu departemen merupakan bagian dari suatu fakultas. Demikian seterusnya beberapa fakultas membentuk suatu universitas. Ilustrasi lain adalah pada data hasil suatu survei ekonomi, seorang individu merupakan bagian dari suatu rumah tangga, selanjutnya pada level yang lebih tinggi adalah desa/kelurahan, kecamatan, kab/kota, propinsi, dan nasional.
254
Selain berguna dalam proses persiapan data untuk analisis, ada tujuan lain yang juga diinginkan yaitu terkait dengan identifikasi data-data yang tidak semestinya. Sebut saja pada saat melakukan agregasi banyaknya transaksi setiap nasabah, ternyata ada beberapa nasabah yang frekuensinya transaksinya jauh melebihi kenormalan. Atau ada kategori-kategori yang seharusnya tidak ada, seperti jenis kelamin ternyata ada lebih dari dua kategori.
255
256
Struktur umum dari prosedur ini adalah -Pernyataan PROC TABULATE