{"id":52,"date":"2018-05-08T09:29:02","date_gmt":"2018-05-08T09:29:02","guid":{"rendered":"https:\/\/rancage.com\/web\/?p=52"},"modified":"2021-07-22T11:35:53","modified_gmt":"2021-07-22T04:35:53","slug":"pengenalan-struktur-data-dalam-r","status":"publish","type":"post","link":"https:\/\/rancage.com\/web\/pengenalan-struktur-data-dalam-r-20180508\/","title":{"rendered":"Pengenalan Struktur Data dalam R"},"content":{"rendered":"<p>R memiliki banyak struktur data. Di sini, dikenalkan beberapa yang sering digunakan saja, sebagai permulaan sebelum terjerumus terlalu dalam dengan R. Bahaya!<\/p>\n<div id=\"toc_container\" class=\"no_bullets\"><p class=\"toc_title\">Contents<\/p><ul class=\"toc_list\"><li><a href=\"#Vektor\"><span class=\"toc_number toc_depth_1\">1<\/span> Vektor<\/a><\/li><li><a href=\"#Skalar\"><span class=\"toc_number toc_depth_1\">2<\/span> Skalar<\/a><\/li><li><a href=\"#Karakter_string\"><span class=\"toc_number toc_depth_1\">3<\/span> Karakter string<\/a><\/li><li><a href=\"#Matriks\"><span class=\"toc_number toc_depth_1\">4<\/span> Matriks<\/a><\/li><li><a href=\"#List\"><span class=\"toc_number toc_depth_1\">5<\/span> List<\/a><\/li><li><a href=\"#Classes\"><span class=\"toc_number toc_depth_1\">6<\/span> Classes<\/a><\/li><\/ul><\/div>\n<h3><span id=\"Vektor\">Vektor<\/span><\/h3>\n<p>Struktur data ini merupakan struktur data yang paling banyak digunakan dalam R. Bisa dikatakan vektor merupakan struktur data yang utama dalam R. Vektor adalah kumpulan nilai yang disebut elemen, yang memiliki tipe data atau mode yang sama. Kita dapat membuat vektor dari elemen-elemen berjenis numerik, string, atau bilangan bulat. Yang penting semua elemen dalam satu vektor harus berjenis sama. Elemen dalam vektor ini dapat diberi nama. Sesuka-suka kita, asal kita tahu, untuk apa.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\nnilai &lt;- c(statistik = 89, fisika = 95, ilmukomunikasi = 100)\r\n#Menampilkan isi vektor nilai\r\nnilai\r\n#Menampilkan isi ke-2\r\nnilai[2]\r\n#Mengambil dan menampilkan isi dengan nama fisika\r\nnilai[&quot;fisika&quot;]\r\n&gt; #Membuat named vector dengan nama nilai\r\n&gt; nilai &lt;- c(statistik = 89, fisika = 95, ilmukomunikasi = 100)\r\n&gt; \r\n&gt; #Menampilkan isi variable nilai\r\n&gt; nilai\r\n     statistik         fisika ilmukomunikasi \r\n            89             95            100 \r\n&gt; \r\n&gt; #Menampilkan isi ke-2 dari vektor nilai \r\n&gt; nilai[2]\r\nfisika \r\n    95 \r\n&gt; \r\n&gt; #Mengambil dan menampilkan isi dengan nama fisika\r\n&gt; nilai[&quot;fisika&quot;]\r\nfisika \r\n    95\r\n<\/pre>\n<h3><span id=\"Skalar\">Skalar<\/span><\/h3>\n<p>Skalar atau nilai individual. Struktur data ini bisa dikatakan tidak benar-benar eksis di dalam R, karena skalar (<em>scalar<\/em>) dapat dinyatakan sebagai vektor dengan panjang 1.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; x &lt;- 6\r\n&gt; x\r\n[1] 6\r\n<\/pre>\n<p>Pada <code>x<\/code> diberikan skalar dengan nilai 6. Perhatikan penanda <code>[1]<\/code> pada keluaran konsol interaktif R. ini menandakan R menganggap <code>x<\/code> sebagai vektor dengan elemen sebanyak 1.<\/p>\n<h3><span id=\"Karakter_string\">Karakter string<\/span><\/h3>\n<p>Contoh berikut memperlihatkan struktur data karakter string. Struktur data ini merupakan vektor atau skalar dengan mode string.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; x &lt;- c(5,12,13)\r\n&gt; x\r\n[1] 5 12 13\r\n&gt; length(x)\r\n[1] 3\r\n&gt; mode(x)\r\n[1] &quot;numeric&quot;\r\n&gt; y &lt;- &quot;abc&quot;\r\n&gt; y\r\n[1] &quot;abc&quot;\r\n&gt; length(y)\r\n[1] 1\r\n&gt; mode(y)\r\n[1] &quot;character&quot;\r\n&gt; z &lt;- c(&quot;abc&quot;,&quot;29 88&quot;)\r\n&gt; length(z)\r\n[1] 2\r\n&gt; mode(z)\r\n[1] &quot;character&quot;\r\n\r\n<\/pre>\n<p>Contoh pertama memberikan vektor <code>x<\/code> yang terdiri dari tiga elemen dengan mode numerik. Kemudian vektor <code>y<\/code> adalah vektor dengan string tunggal. Bagaimana apabila vektor terdiri dari karakter string dan numerik? R akan mengubahnya menjadi karakter. Seperti contoh berikut<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; x&lt;-c(&quot;abc&quot;,1,3)\r\n&gt; x\r\n[1] &quot;abc&quot; &quot;1&quot;   &quot;3&quot;  \r\n&gt; x&lt;-c(1,2,&quot;abc&quot;,1,3)\r\n&gt; x\r\n[1] &quot;1&quot;   &quot;2&quot;   &quot;abc&quot; &quot;1&quot;   &quot;3&quot;  \r\n<\/pre>\n<p>R memiliki banyak fungsi untuk mengelola string. Beberapa berurusan dengan penggabungan string-string atau pemisahannya. Ini contohnya.<br \/>\n&gt; u &lt;- paste(&#8220;abc&#8221;,&#8221;de&#8221;,&#8221;f&#8221;) # menggabungkan string &gt; u<br \/>\n[1] &#8220;abc de f&#8221;<br \/>\n&gt; v &lt;- strsplit(u,&#8221; &#8220;) # memisahkan string berdasarkan karakter kosong. &gt; v<br \/>\n[[1]]<br \/>\n[1] &#8220;abc&#8221; &#8220;de&#8221; &#8220;f&#8221;<br \/>\n[\/code]<\/p>\n<h3><span id=\"Matriks\">Matriks<\/span><\/h3>\n<p>Sesuai namanya, struktur data ini memiliki makna yang sama dengan matrik dalam matematika: yaitu kotak bilangan yang tersusun sebagai array. Pada dasarnya matriks merupakan vektor, dengan tambahan atribut, yaitu nomor kolom dan nomor baris. Berikut adalah contoh dari matriks.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; m &lt;- rbind(c(1,4),c(2,2))\r\n&gt; m\r\n[,1] [,2]\r\n[1,] 1 4\r\n[2,] 2 2\r\n&gt; m % * % c(1,1)\r\n[,1]\r\n[1,] 5\r\n[2,] 4\r\n<\/pre>\n<p>Contoh pertama menggunakan fungsi <code>rbind<\/code> untuk mengabungkan dua vektor menjadi matriks yang digabungkan menjadi baris-baris. Fungsi <code>cbind<\/code> dapat digunakan apabila hendak menggabungkan suatu vektor sebagai kolom dari suatu matriks. Terakhir dari contoh di atas adalah melakukan perkalian matriks antara <code>m<\/code> dengan vektor <code>(1,1)<\/code>. Untuk mengakses nilai elemen tertentu dari matriks dapat dilakukan dengan kurung siku <code>[a,b]<\/code> untuk mengambil nilai baris ke-a dan kolom ke-b.<br \/>\nContoh<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; m[1,2]\r\n[1] 4\r\n&gt; m[2,2]\r\n[1] 2\r\n<\/pre>\n<p>Di dalam R, selain elemen tunggal, juga dapat dilakukan pengaksesan untuk kolom atau baris. Seperti contoh berikut<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; m[1,] # row 1\r\n[1] 1 4\r\n&gt; m[,2] # column 2\r\n[1] 4 2\r\n<\/pre>\n<h3><span id=\"List\">List<\/span><\/h3>\n<p>Sebagaimana vektor, list juga merupakan wadah untuk menyimpan nilai. Perbedaannya adalah pada list, elemen list dapat bertipe apa saja, dan tidak harus sama. Elemen dari suatu list dapat diakses dengan mengambil nama list dan nama elemen dari list yang dihubungkan dengan lambang \u201c$\u201d.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; x &lt;- list(u=2, v=&quot;abc&quot;)\r\n&gt; x\r\n$u\r\n[1] 2\r\n$v\r\n[1] &quot;abc&quot;\r\n&gt; x$u\r\n[1] 2\r\n<\/pre>\n<p>Ekspresi <code>x$u<\/code> merujuk pada komponen <code>u<\/code> dalam list <code>x<\/code>. List <code>x<\/code> ini memiliki dua komponen yaitu <code>u<\/code> dan <code>v<\/code>.<br \/>\nSecara umum, list digunakan untuk menampung beberapa hasil yang dikeluarkan oleh suatu fungsi. Contoh pada fungsi <code>hist()<\/code>, misal kita gunakan gugus data bawaan dari R yaitu <code>Nile<\/code>, dan membuat histogram dari data tersebut.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\ndata(Nile) #untuk mengaktifkan gugus data Nile\r\nhist(Nile) #membuat histogram dari data Nile\r\nx&lt;-hist(Nile) \r\n<\/pre>\n<p>Apakah <code>x<\/code>? Ternyata <code>x<\/code> merupakan list dengan komponen-komponen yang dihasilkan dari fungsi <code>hist()<\/code>. Mari kita lihat.<br \/>\nSelain menghasilkan keluaran berupa histogram<br \/>\n<img src=\"https:\/\/rancage.com\/web\/wp-content\/uploads\/2018\/05\/Rplot.jpeg\" alt=\"Histogram of Nile\" \/><br \/>\nfungsi tersebut juga menghasilkan objek <code>x<\/code> yang berbentuk list yang dapat kita panggil mana kita suka.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; print(x)\r\n$breaks\r\n [1]  400  500  600  700  800  900 1000 1100 1200 1300 1400\r\n\r\n$counts\r\n [1]  1  0  5 20 25 19 12 11  6  1\r\n\r\n$density\r\n [1] 0.0001 0.0000 0.0005 0.0020 0.0025 0.0019 0.0012 0.0011 0.0006 0.0001\r\n\r\n$mids\r\n [1]  450  550  650  750  850  950 1050 1150 1250 1350\r\n\r\n$xname\r\n[1] &quot;Nile&quot;\r\n\r\n$equidist\r\n[1] TRUE\r\n\r\nattr(,&quot;class&quot;)\r\n[1] &quot;histogram&quot;\r\n<\/pre>\n<p>Abaikan apa makna dari komponen-komponen tersebut. Kita masih dalam tahap kenalan awal. Nanti juga ada penjelasan di bagian lain. Hal yang menarik adalah, bahwa selain membuat histogram, fungsi <code>hist ()<\/code> juga menyimpan komponen nilai-nilai lain dalam bentuk list. Agar tampilan list ini lebih ringkas sehingga lebih mudah dibaca, dapat menggunakan perintah <code>str<\/code>.<\/p>\n<pre class=\"brush: r; title: ; notranslate\" title=\"\">\r\n&gt; str(x)\r\nList of 6\r\n $ breaks  : int [1:11] 400 500 600 700 800 900 1000 1100 1200 1300 ...\r\n $ counts  : int [1:10] 1 0 5 20 25 19 12 11 6 1\r\n $ density : num [1:10] 0.0001 0 0.0005 0.002 0.0025 0.0019 0.0012 0.0011 0.0006 0.0001\r\n $ mids    : num [1:10] 450 550 650 750 850 950 1050 1150 1250 1350\r\n $ xname   : chr &quot;Nile&quot;\r\n $ equidist: logi TRUE\r\n - attr(*, &quot;class&quot;)= chr &quot;histogram&quot;\r\n\r\n\r\n&lt;code&gt;str&lt;\/code&gt; adalah singkatan dari struktur. Fungsi ini dapat digunakan untuk memeriksa struktur pada setiap objek dalam R. Biar tambah bingung.\r\n\r\n&lt;h3&gt;f.\tData Frame&lt;\/h3&gt;\r\nGugus data tertentu memiliki beberapa macam tipe data. Misalnya gugus data yang didapat dari hasil survei terhadap pengunjung dari suatu restoran. Gugus dapat terdiri dari nama, jenis kelamin, usia, pekerjaan, jumlah pembelian. Karena tipe datanya tidak seragam, tidak dapat menggunakan struktur data matriks. Data frame adalah merupakan list, dengan setiap komponen di dalamnya menjadi suatu kolom dalam suatu \u201cmatriks\u201d. Kita dapat membuat sebuah data frame dengan cara sebagai berikut.\r\n\r\n&gt; d&lt;-data.frame(list(anak=c(&quot;banu&quot;,&quot;dara&quot;),umur=c(13,11)))\r\n&gt; str(d)\r\n'data.frame':\t2 obs. of  2 variables:\r\n $ anak: Factor w\/ 2 levels &quot;banu&quot;,&quot;dara&quot;: 1 2\r\n $ umur: num  13 11\r\n&gt; print(d)\r\n  anak umur\r\n1 banu   13\r\n2 dara   11\r\n&gt; d$umur\r\n[1] 13 11\r\n&gt; d[1,]\r\n  anak umur\r\n1 banu   13\r\n<\/pre>\n<p>Hasil pembacaan gugus data dari file atau database, secara umum menghasilkan suatu data frame.<\/p>\n<h3><span id=\"Classes\">Classes<\/span><\/h3>\n<p>Struktur data ini yang tampak paling rumit. Begini urutan penjelasannya. Karena R merupakan bahasa pemrograman dengan paradigma OOP (object oriented programming), jadi data dan strukturnya juga merupakan objek. Dalam konsep OOP, object merupakan instances (contoh) dari classes.<br \/>\nBegini, R merupakan bahasa yang diturunkan dari bahasa S. Apakah kelak akan ada juga bahasa T sebagai cucu dari bahasa S? Jadi nama dari struktur data classes ini adalah S3. Yaitu nama bahasa mamaknya S, untuk versi ke-3. Sebagian besar R berdasarkan pada kelas ini. <em>Instance<\/em> dari kelas ini adalah list dalam R, tetapi dengan tambahan atribut: nama kelas. Contoh sebelum ini memperlihatkan bahwa fungsi hist memiliki beberapa macam nilai keluaran yang non grafis, yang termuat di dalam suatu list. Di dalam list tersebut ada komponen break dan count. Juga ada komponen attribute, yang secara spesifik menyatakan class dari list, yang dinamakan histogram.<br \/>\nLalu, apabila kelas S3 ini hanyalah list, kenapa bikin ribet dinamakan berbeda segala? Jawabannya adalah bahwa class ini digunakan oleh fungsi generik. Fungsi generic adalah keluarga fungsi yang dapat melayani tujuan yang serupa tetapi dengan cara tertentu pada kelas-kelas yang spesifik. Fungsi generik yang umum adalah <code>summary()<\/code>. Pengguna R yang membutuhkan fungsi statistik, semisal <code>hist()<\/code>, tetapi tidak tahu bagaimana mengelola keluaran dari fungsi tersebut dapat memanggil fungsi summary() terhadap output dari fungsi hist(). Fungsi <code>summary()<\/code> ini tidak hanya menangani output tersebut sebagai list, tetapi sebagai kelas S3. Fungsi summary(), pada dasarnya merupakan keluarga dari fungsi pembuat ringkasan (summary-making) yang masing-masing menangani objek-objek dari kelas yang berbeda. Saat fungsi ini dipanggil untuk menangani suatu keluaran dari fungsi R, akan dicari fungsi summary yang bersesuaian dengan kelas dari argumen yang dimasukkan. <code>summary()<\/code> dengan argumen berupa output dari <code>hist()<\/code> akan berbeda dengan fungsi untuk melayani argumen berupa output dari fungsi <code>lm()<\/code>.<br \/>\nTambah bingung, jadi kelas ini buat apa ya? Pake dulu aja deh\u2026<\/p>\n","protected":false},"excerpt":{"rendered":"<p>R memiliki banyak struktur data. Di sini, dikenalkan beberapa yang sering digunakan saja, sebagai permulaan sebelum terjerumus terlalu dalam dengan R. Bahaya! Contents1 Vektor2 Skalar3 Karakter string4 Matriks5 List6 Classes Vektor Struktur data ini merupakan struktur data yang paling banyak digunakan dalam R. Bisa dikatakan vektor merupakan struktur data yang utama dalam R. Vektor adalah [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"_monsterinsights_skip_tracking":false,"_monsterinsights_sitenote_active":false,"_monsterinsights_sitenote_note":"","_monsterinsights_sitenote_category":0},"categories":[4],"tags":[],"_links":{"self":[{"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/posts\/52"}],"collection":[{"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":11,"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/posts\/52\/revisions"}],"predecessor-version":[{"id":174,"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/posts\/52\/revisions\/174"}],"wp:attachment":[{"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/media?parent=52"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/categories?post=52"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/rancage.com\/web\/wp-json\/wp\/v2\/tags?post=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}