Langsung ke konten utama

Cara Mudah Melakukan Scrape Data pada Grafik Dinamis JavaScript Object Notation (JSON) dengan R

Scrape Data dari Grafik Dinamis Format JSON dengan R

Siapa dari teman-teman yang suka sekali dengan grafik dinamis? Saya kira cukup banyak peminat dari visualisasi data berjenis ini. Pasalnya, selain lebih menarik karena keindahannya, grafik dinamis juga secara langsung dapat mengamati pola dari sebuah data.

Bila sebelumnya kita membahas mengenai Natural Language Processing (NLP) menggunakan beberapa fungsi yang ada di R. Pada kesempatan kali ini, kita akan mencoba memahami sekaligus mempraktikkan bagaimana melakukan scraping grafik yang dinamis.

Biasanya, bahasa yang digunakan dalam visualisasi dinamis yang interaktif sejumlah situs adalah JSON. JSON sendiri merupakan kependekan dari JavaScript Object Notation. Data yang terbungkus atau tercampur dengan bahasa JSON biasanya disebut sebagai data semi-terstruktur (semistructured data).

Dalam bahasa R sendiri, salah satu jenis package yang cukup ampuh digunakan dalam melakukan scrape data berformat JSON ini adalah package jsonlite yang dapat diinstal dengan fungsi install.package("jsonlite") kemudian diaktivasi dengan fungsi library(jsonlite). Pada praktikum kali ini, kita akan mencoba mendapatkan data harga emas dengan satuan harga Indonesia (Rupiah) per oz. Adapun situs yang menyediakan histori data harga emas dengan satuan Indonesia adalah ychartscom dengan tampilan situs berikut:

Situs yang menyediakan data seris harga emas satuan rupiah

Sebelum melakukan scrape, kita perlu menelusuri kode HTML situs tersebut dengan cara inspect element kemudian pilih Network dan refresh situs sehingga muncul sejumlah respon termasuk Headers.

Tampilan inspect element

Setelah mendapatkan responnya, kita tinggal copy dan paste saja URL yang memuat grafik dinamis harga emas. Baru kemudian kita dapat melakukan langkah-langkah berikut untuk kemudian divisualisasikan menggunakan package gganimate.

#Aktivasi package jsonlite
library(jsonlite)
#Scrape Grafik Dinamis Java Script Object Notation (JSON)
ems <- fromJSON("https://ycharts.com/charts/fund_data.json?annotations=&annualizedReturns=false&calcs=&chartType=interactive&chartView=&correlations=&dateSelection=range&displayDateRange=false&displayTicker=false&endDate=&format=real&legendOnChart=false&note=&partner=basic_2000&quoteLegend=false&recessions=false&scaleType=linear&securities=id:I:GPIRNK,include:true,,&securityGroup=&securitylistName=&securitylistSecurityId=&source=false&splitType=single&startDate=&title=&units=false&useCustomColors=false&useEstimates=false&zoom=max&redesign=true&chartCreator=&maxPoints=752")
#Melihat sekilas data dalam list hasil scrape
ems$chart_data[[1]]$raw_data
## [[1]]
##                [,1]     [,2]
##   [1,] 1.517443e+12 18010305
##   [2,] 1.518048e+12 17901301
##   [3,] 1.518653e+12 18337193
##   [4,] 1.519258e+12 18175147
##   [5,] 1.519862e+12 17975024
##   [6,] 1.520467e+12 18209985
##   [7,] 1.521072e+12 18130834
##   [8,] 1.521677e+12 18279134
##   [9,] 1.522282e+12 18226103
##  [10,] 1.522886e+12 18277781
##  [11,] 1.523491e+12 18467034
##  [12,] 1.524096e+12 18586403
##  [13,] 1.524701e+12 18341221
##  [14,] 1.525306e+12 18328507
##  [15,] 1.525910e+12 18567383
##  [16,] 1.526515e+12 18120054
##  [17,] 1.527120e+12 18444053
##  [18,] 1.527725e+12 18137836
##  [19,] 1.528330e+12 17994803
##  [20,] 1.528934e+12 18149262
##  [21,] 1.529539e+12 17856512
##  [22,] 1.530144e+12 18009802
##  [23,] 1.530749e+12 18060368
##  [24,] 1.531354e+12 17916041
##  [25,] 1.531958e+12 17624033
##  [26,] 1.532563e+12 17760495
##  [27,] 1.533168e+12 17593638
##  [28,] 1.533773e+12 17498781
##  [29,] 1.534378e+12 17245643
##  [30,] 1.534464e+12 17216423
##  [31,] 1.535069e+12 17536723
##  [32,] 1.535674e+12 17712088
##  [33,] 1.536278e+12 17767697
##  [34,] 1.536883e+12 17794869
##  [35,] 1.537488e+12 17761737
##  [36,] 1.538093e+12 17691806
##  [37,] 1.538698e+12 18273681
##  [38,] 1.539302e+12 18546299
##  [39,] 1.539907e+12 18647970
##  [40,] 1.540512e+12 18774876
##  [41,] 1.541117e+12 18422973
##  [42,] 1.541722e+12 17781534
##  [43,] 1.542326e+12 17861096
##  [44,] 1.542931e+12 17791870
##  [45,] 1.543536e+12 17414006
##  [46,] 1.544141e+12 17990548
##  [47,] 1.544746e+12 18017578
##  [48,] 1.545350e+12 18312372
##  [49,] 1.545955e+12 18622240
##  [50,] 1.546560e+12 18264172
##  [51,] 1.547165e+12 18102013
##  [52,] 1.547770e+12 18203534
##  [53,] 1.548374e+12 18224580
##  [54,] 1.548979e+12 18382677
##  [55,] 1.549584e+12 18365823
##  [56,] 1.550189e+12 18619306
##  [57,] 1.550794e+12 18682453
##  [58,] 1.551398e+12 18518174
##  [59,] 1.552003e+12 18559734
##  [60,] 1.552608e+12 18586607
##  [61,] 1.553213e+12 18574562
##  [62,] 1.553818e+12 18446495
##  [63,] 1.554422e+12 18199356
##  [64,] 1.555027e+12 18239920
##  [65,] 1.555632e+12 17914017
##  [66,] 1.556237e+12 18219587
##  [67,] 1.556842e+12 18228924
##  [68,] 1.557446e+12 18437705
##  [69,] 1.558051e+12 18507557
##  [70,] 1.558656e+12 18458381
##  [71,] 1.559261e+12 18490735
##  [72,] 1.559866e+12 19134426
##  [73,] 1.560470e+12 19360034
##  [74,] 1.561075e+12 19776657
##  [75,] 1.561680e+12 19905648
##  [76,] 1.562285e+12 19555662
##  [77,] 1.562890e+12 19716251
##  [78,] 1.563494e+12 20062219
##  [79,] 1.564099e+12 19892701
##  [80,] 1.564704e+12 20444015
##  [81,] 1.565309e+12 21252362
##  [82,] 1.565914e+12 21569584
##  [83,] 1.566518e+12 21372755
##  [84,] 1.567123e+12 21680353
##  [85,] 1.567728e+12 21476551
##  [86,] 1.568333e+12 20990790
##  [87,] 1.568938e+12 21109203
##  [88,] 1.569542e+12 21104432
##  [89,] 1.570147e+12 21190484
##  [90,] 1.570752e+12 20907784
##  [91,] 1.571357e+12 21079775
##  [92,] 1.571962e+12 21245054
##  [93,] 1.572566e+12 21176005
##  [94,] 1.573171e+12 20518597
##  [95,] 1.573776e+12 20643682
##  [96,] 1.574381e+12 20626778
##  [97,] 1.574986e+12 20595414
##  [98,] 1.575590e+12 20489836
##  [99,] 1.576195e+12 20510399
## [100,] 1.576800e+12 20672723
## [101,] 1.577405e+12 21085425
## [102,] 1.578010e+12 21566344
## [103,] 1.578614e+12 21381418
## [104,] 1.579219e+12 21241768
## [105,] 1.579824e+12 21231462
## [106,] 1.580429e+12 21632250
## [107,] 1.581034e+12 21505987
## [108,] 1.581638e+12 21625644
## [109,] 1.582243e+12 22620025
## [110,] 1.582848e+12 23097324
## [111,] 1.583453e+12 23958338
## [112,] 1.584058e+12 23082557
## [113,] 1.584662e+12 23798318
## [114,] 1.585267e+12 26103223
## [115,] 1.585872e+12 26495169
## [116,] 1.586477e+12 26688721
## [117,] 1.587082e+12 26116047
## [118,] 1.587686e+12 26424859
## [119,] 1.588291e+12 25082969
## [120,] 1.588896e+12 25458508
## [121,] 1.589501e+12 25787303
## [122,] 1.590106e+12 25500521
## [123,] 1.590710e+12 25256306
## [124,] 1.591315e+12 23374703
## [125,] 1.591920e+12 24555028
## [126,] 1.592525e+12 24459975
## [127,] 1.593130e+12 24850873
## [128,] 1.593734e+12 25769100
## [129,] 1.594339e+12 26045781
## [130,] 1.594944e+12 26559010
## [131,] 1.595549e+12 27789682
## [132,] 1.596154e+12 28687539
## [133,] 1.596672e+12 30149381
## [134,] 1.597277e+12 28726294
## [135,] 1.597882e+12 28465931
## [136,] 1.598486e+12 28203642
## [137,] 1.599091e+12 28670148
## [138,] 1.599696e+12 29208644
## [139,] 1.600301e+12 28714588
## [140,] 1.600906e+12 27721458
## [141,] 1.601510e+12 28216170
## [142,] 1.602115e+12 27764389
## [143,] 1.602720e+12 27792010
## [144,] 1.603325e+12 27867926
## [145,] 1.603930e+12 27353138
## [146,] 1.604534e+12 27874910
## [147,] 1.605139e+12 26566626
## [148,] 1.605744e+12 26304721
## [149,] 1.606349e+12 25484339
## [150,] 1.606954e+12 25909430
## [151,] 1.607558e+12 26014558
## [152,] 1.608163e+12 26669029
## [153,] 1.608768e+12 26625000
## [154,] 1.609373e+12 26520781
## [155,] 1.609978e+12 26708592
## [156,] 1.610582e+12 25885796
## [157,] 1.611187e+12 26069401
## [158,] 1.611792e+12 26081558
## [159,] 1.612397e+12 25038317
## [160,] 1.613002e+12 25710799
## [161,] 1.613606e+12 24868427
## [162,] 1.614211e+12 25061920
## [163,] 1.614816e+12 24423108
## [164,] 1.615421e+12 24837821
## [165,] 1.616026e+12 24870218
## [166,] 1.616630e+12 25060553
## [167,] 1.617235e+12 25070877
## [168,] 1.617840e+12 25516193
## [169,] 1.618445e+12 25672691
## [170,] 1.619050e+12 25958130
## [171,] 1.619654e+12 25470291
## [172,] 1.620259e+12 25962494
## [173,] 1.620864e+12 25865006
## [174,] 1.621469e+12 27000563
## [175,] 1.622074e+12 27024091
## [176,] 1.622678e+12 26663668
## [177,] 1.623283e+12 26908540
## [178,] 1.623888e+12 25533238
## [179,] 1.624493e+12 25773235
## [180,] 1.625098e+12 25836204
## [181,] 1.625702e+12 26256842
## [182,] 1.626307e+12 26412459
## [183,] 1.626912e+12 26060534
## [184,] 1.627517e+12 26492838
## [185,] 1.628122e+12 25827257
## [186,] 1.628726e+12 25131979
## [187,] 1.629331e+12 25665976
## [188,] 1.629936e+12 25758307
## [189,] 1.630541e+12 25869621
## [190,] 1.631146e+12 25487033
## [191,] 1.631750e+12 24912657
## [192,] 1.632355e+12 24924375
## [193,] 1.632960e+12 24943826
## [194,] 1.633565e+12 25050896
## [195,] 1.634170e+12 25393147
## [196,] 1.634774e+12 25128165
## [197,] 1.635379e+12 25560104
## [198,] 1.635984e+12 25752299
## [199,] 1.636589e+12 26498297
## [200,] 1.637194e+12 26466489
## [201,] 1.637798e+12 25512429
## [202,] 1.638403e+12 25376288
## [203,] 1.639008e+12 25492192
## [204,] 1.639613e+12 25754827
## [205,] 1.640218e+12 25721392
## [206,] 1.640822e+12 25764966
## [207,] 1.641427e+12 25753221
## [208,] 1.642032e+12 26017354
## [209,] 1.642637e+12 26457707
## [210,] 1.643242e+12 25991906
## [211,] 1.643846e+12 25774544
## [212,] 1.644451e+12 26323509
## [213,] 1.645056e+12 27109470
## [214,] 1.645661e+12 27848836
## [215,] 1.646266e+12 27752473
## [216,] 1.646870e+12 28511449
## [217,] 1.647475e+12 27884868
## [218,] 1.648080e+12 28198654
## [219,] 1.648685e+12 27894128
## [220,] 1.649290e+12 27747330
## [221,] 1.649894e+12 28160858
## [222,] 1.650499e+12 27880432
## [223,] 1.651104e+12 27377585
## [224,] 1.651709e+12 27432674
## [225,] 1.652314e+12 26815420
## [226,] 1.652918e+12 27166730
## [227,] 1.653523e+12 27046366
## [228,] 1.654128e+12 26718763
## [229,] 1.654733e+12 26865630
## [230,] 1.655338e+12 26971926
## [231,] 1.655942e+12 27329190
## [232,] 1.656547e+12 27068758
## [233,] 1.657152e+12 26212258
## [234,] 1.657757e+12 25497744
## [235,] 1.658362e+12 25631917
## [236,] 1.658966e+12 26184139
## [237,] 1.659571e+12 26627633
## [238,] 1.660176e+12 26532767
## [239,] 1.660781e+12 26187521
## [240,] 1.661386e+12 25991996
## [241,] 1.661990e+12 25215421
## [242,] 1.662595e+12 25465043
## [243,] 1.663200e+12 25163369
## [244,] 1.663805e+12 25107009
## [245,] 1.664410e+12 25256386
## [246,] 1.665014e+12 26034412
## [247,] 1.665619e+12 25317290
## [248,] 1.666224e+12 25465710
## [249,] 1.666829e+12 25838158
## [250,] 1.667434e+12 25565674
## [251,] 1.668038e+12 27370766
## [252,] 1.668643e+12 27544074
## [253,] 1.669248e+12 27499217
## [254,] 1.669853e+12 28061520
## [255,] 1.670458e+12 27963037
## [256,] 1.671062e+12 27854593
## [257,] 1.671667e+12 28059407
## [258,] 1.672272e+12 28398791
## [259,] 1.672877e+12 28624155
## [260,] 1.673482e+12 28873611
## [261,] 1.674086e+12 28978536
## [262,] 1.674691e+12 28885296
## [263,] 1.674778e+12 28816905
#Mengubah list menjadi dataframe
dataems <- data.frame(ems$chart_data[[1]]$raw_data)
head(dataems)
##             X1       X2
## 1 1.517443e+12 18010305
## 2 1.518048e+12 17901301
## 3 1.518653e+12 18337193
## 4 1.519258e+12 18175147
## 5 1.519862e+12 17975024
## 6 1.520467e+12 18209985
#Mengubah nama variabel X1 dan X2 menjadi tgl dan hrg
names(dataems) <- c("tgl","hrg")
head(dataems)
##            tgl      hrg
## 1 1.517443e+12 18010305
## 2 1.518048e+12 17901301
## 3 1.518653e+12 18337193
## 4 1.519258e+12 18175147
## 5 1.519862e+12 17975024
## 6 1.520467e+12 18209985
#Konversi variabel tgl hasil scrape JSON menjadi datetime
dataems$tgl <- (dataems$tgl/1000)
dataems$tgl <- as.POSIXct(dataems$tgl, origin = "1970-01-01", tz = "UTC")
head(dataems)
##          tgl      hrg
## 1 2018-02-01 18010305
## 2 2018-02-08 17901301
## 3 2018-02-15 18337193
## 4 2018-02-22 18175147
## 5 2018-03-01 17975024
## 6 2018-03-08 18209985
#Visualisasi data interaktif
Penggunaan gganimate dapat teman-teman pelajari di sini
## 
Rendering [===============================================================] at 8.5 fps ~ eta:  0s 

Grafik animasi hasil scrape data dinamis format JSON

Berdasarkan grafik di atas, terlihat harga emas mulai melonjak sejak 2018. Sejak itu, perekonomian dunia mulai kurang stabil, terlebih dengan kehadiran Pandemi Covid-19 yang mulai berdampak pada perekonomian Indonesia di akhir Maret 2020. Ketidakpastian ekonomi global singgah ke banyak negara dan situasi ini mendorong peningkatan terhadap komoditas emas. Dalam situasi krisis atau ketidakpastian ekonomi global sebagaimana yang telah terjadi beberapa tahun lampau, emas merupakan penyelamat aset atau harta kekayaan karena mampu melindungi aset atau harta dari dampak inflasi. Permintaan yang meningkat inilah yang kemudian memantik harga emas semakin mahal.

Demikian sedikit sharing kita kali ini, semoga sedikit ini dapat bermanfaat bagi para pembaca setia blog ini. Selamat memahami dan mempraktikan!

Komentar

Postingan populer dari blog ini

Mencari P - Value dan Titik Kritis Uji F, Uji t, Uji Chi Square, dan Uji Z Normal dengan R

Mencari nilai p-value dan titik kritis Bagi teman-teman yang pernah mengenal statistika, pasti familier dengan istilah p-value dan titik kritis. P-value biasanya didefinisikan sebagai probabiltas atau peluang maksimal yang diamati dari hasil uji statistik, bahasa gampangnya adalah besarnya kesalahan penelitian berdasarkan uji statistik. Sebagai contoh sederhana, dari 100 orang dengan nama masing-masing dan diklasifikasikan ke dalam gender nama perempuan dan nama laki-laki, didapatkan nilai p-value uji statistiknya sebesar 0,05 atau 5%. Itu artinya, dari 100 orang, ada kemungkinan sebanyak 5 orang yang namanya salah klasifikasi. Dari namanya terdeteksi sebagai nama perempuan, padahal aktualnya yang bersangkutan bergender laki-laki. Sedangkan titik kritis atau titik uji adalah nilai batas pengujian hipotesis statistik, apakah masuk dalam wilayah tolak hipotesis, ataukah gagal menolaknya. Titik ini berkaitan erat dengan nilai p-value . Kalau biasanya kita mendapatkan kedua nilai ini da...

Cara Mendowload dan Install R serta RStudio di Windows (Step by Step)

Cara Download dan Install R serta R Studio di Windows Halo teman-teman, mohon maaf karena beberapa waktu ini, blog ini sempat vakum dari unggahan. Kali ini saya akan coba berbagai mengenai bagaimana cara mengunduh ( download ) dan menginstal ( install ) program R sekaligus R Studio khususnya di Windows. Unggahan kali ini sedikit terbalik karena semestinya saya unggah terlebih dahulu pertama kali di blog ini, namun bukan masalah, mengingat kemarin ada beberapa pihak yang meminta untuk menerangkap bagaimana tahapan mengunduh dan instalasi R dan R Studio, jadinya saya dahulukan pada unggahan ini sebelum pembahasan mengenai Data Mining , Data Science , atau bahasan Big Data kita terlampau jauh. Baik, kita akan mulai dengan bagaimana mengunduh R dan R Studio melalui mesin pencari Google. R dan R Studio ini memang beberapa waktu terakhir ini booming , apalagi dengan munculnya konsep mengenai Big Data , Data Modelling, Data Mining, dan Data Science serta Data Visualization . Sebenarnya, men...

Analisis Tipologi Klassen (Klassen Typology) dan Visualisasi Spasialnya dengan R

Tipologi Klassen dan visualisasinya dengan R Halo teman-teman, sebelumnya kita telah membahas tentang analisis Shift Share dan Location Quotient (LQ) dengan menggunakan R. Kali ini, kita akan membahas mengenai satu lagi alat analisis yang sebenarnya merupakan alat analisis tiga serangkai dari SS dan LQ, yaitu analisis Tipologi Klassen. Dalam penelitian ekonomi kewilayahan, ketiga analisis ini seringkali digunakan, baik dalam rangka melihat perkembangan dan transformasi struktur ekonomi suatu wilayah maupun melihat keunggulan kompetitif dan keunggulan komparatif wilayah satu dengan wilayah lainnya dengan mengacu wilayah referensi. Terlebih dulu, sebelum melakukan visualisasi spasial menggunakan fungsi plot(), ada baiknya kita bahas terlebih dahulu mengenai Tipologi Klassen itu sendiri. Tipologi Klassen merupakan teknik pengelompokan sektor, subsektor, lapangan usaha, atau komoditas tertentu di wilayah analisis berdasarkan pertumbuhan nilai tambah wilayah analisis terhadap nasional atau...