Topik 5 | Data Online

1. Import Data Online

Metode ketiga yaitu import data dari url dengan fungsi read. Pertama kita perlu me-load package tidyverse kemudian gunakan fungsi read_csv() atau read_excel() sesuai format data, Kita coba meng-import data raw csv dari Data Pangan pada repository github Komposisi Pangan

#> Load package
library(tidyverse)

#> Identifikasi url data dengan nama data_pangan
data_pangan <- read_csv("https://raw.githubusercontent.com/AktUPNYK/Project-DA/main/data/komposisi_pangan.csv")

#> Tampilkan data
data_pangan
# A tibble: 1,147 × 20
   Kode_Bahan Sumber      Nama_Bahan       Kelompok_Pangan Jenis_Pangan `Air(g)`
   <chr>      <chr>       <chr>            <chr>           <chr>           <dbl>
 1 AR001      KZGMI-2001  Beras giling, m… Serealia        Tunggal/Sin…     12  
 2 AR002      KZGPI- 1990 Beras giling va… Serealia        Tunggal/Sin…     11.4
 3 AR003      KZGPI- 1990 Beras giling va… Serealia        Tunggal/Sin…     12  
 4 AR004      KZGMI-2001  Beras hitam, me… Serealia        Tunggal/Sin…     12.9
 5 AR005      KZGMI-2001  Beras jagung ku… Serealia        Tunggal/Sin…     10.8
 6 AR006      KZGMI-2001  Beras jagung pu… Serealia        Tunggal/Sin…     22.5
 7 AR007      KZGPI- 1990 Beras ketan hit… Serealia        Tunggal/Sin…     13.7
 8 AR008      KZGPI- 1990 Beras ketan put… Serealia        Tunggal/Sin…     12.9
 9 AR009      KZGMI-2001  Beras ladang, m… Serealia        Tunggal/Sin…      9.8
10 AR010      DABM-1964   Beras menir, me… Serealia        Tunggal/Sin…     12  
# ℹ 1,137 more rows
# ℹ 14 more variables: `Energi(Kal)` <dbl>, `Protein(g)` <dbl>,
#   `Lemak(g)` <dbl>, `KH(g)` <dbl>, `Serat(g)` <dbl>, `Kalsium(g)` <dbl>,
#   `Fosfor(g)` <dbl>, `Besi(g)` <dbl>, `Natrium(g)` <dbl>, `Kalium(g)` <dbl>,
#   `Tembaga(g)` <dbl>, `Thiamin(g)` <dbl>, `Riboflavin(g)` <dbl>,
#   `VITC(g)` <dbl>

2. Import Google Sheets

Panggunaan package googlesheet hampir mirip dengan import online hanya saja diganti dengan sheet_id. Pertama kita me-load package googlesheets4 dan kemudian gunakan fungsi read_sheet. Misal kita akan mengimport data Penjualan Buah dari google sheet : https://docs.google.com/spreadsheets/d/18TaWfcpqvwAvMDbsX6j8FCNZPVcL--x23abId0tzBEI maka kita akan mengambil id sheet sebagai key call nya yaitu 18TaWfcpqvwAvMDbsX6j8FCNZPVcL--x23abId0tzBEI

#> Load paket googlesheet
library(googlesheets4)
googlesheets4::gs4_deauth()

#> Membaca sheet berdasarkan sheet id
read_sheet("18TaWfcpqvwAvMDbsX6j8FCNZPVcL--x23abId0tzBEI")
# A tibble: 100 × 7
   shop_id item_id item  item_name         sold `price (Rp)` city         
     <dbl>   <dbl> <chr> <chr>            <dbl>        <dbl> <chr>        
 1    1590    3578 Apel  Apel merah        1921        22549 Kab. Bogor   
 2    1968    4327 Apel  Apel rome beauty  2077        36256 Kota Bandung 
 3    1911    2153 Apel  Apel fuji         1971        43525 Kota Malang  
 4    1579    1223 Apel  Apel manalagi     1961        38031 Jakarta Pusat
 5    1574    4675 Apel  Apel wanglin      3239        23299 Kab. Bogor   
 6    3512    3279 Apel  Apel merah        4474        35882 Kota Bandung 
 7    1904    2643 Apel  Apel rome beauty  2288        25221 Kota Malang  
 8    1943    4171 Apel  Apel fuji         1505        10693 Jakarta Pusat
 9    3131    3728 Apel  Apel manalagi     1860        27556 Kab. Bogor   
10    4530    4649 Apel  Apel wanglin      1195        41518 Kota Bandung 
# ℹ 90 more rows

2.1 Menampilkan sheet khusus google sheet

Misal dari google sheet : https://docs.google.com/spreadsheets/d/1sQz1fwftsxbVfWeCCs-toCuZOmU8Te04SxB2bgLDyKI

terdapat 2 sheet dan kita hanya akan menampilkan data pada sheet Resto Steak Jakarta maka :

#> Identifikasi id sheet google sheet
tempat_makan_sheet_id <- "1sQz1fwftsxbVfWeCCs-toCuZOmU8Te04SxB2bgLDyKI"

#> Tampilkan data sheet 
read_sheet(tempat_makan_sheet_id, sheet = "Resto Steak Jakarta",na = c("", "N/A")
  )
# A tibble: 187 × 28
      no restaurant_name   city  district place unique_menu  price google_rating
   <dbl> <chr>             <chr> <chr>    <chr> <chr>        <dbl> <list>       
 1     1 Tucano's Churras… Cent… Sudirman Sena… Classic Be… 268000 <dttm [1]>   
 2     2 Kitchenette       Sout… Senayan  Sena… Kitchenett… 205000 <dttm [1]>   
 3     3 Tony Roma's       Cent… Thamrin  UOB … Baby Back … 170000 <dttm [1]>   
 4     4 Gandy Steak House Cent… Menteng  Owne… Grilled Au… 191000 <dttm [1]>   
 5     5 Joni Steak        Cent… Gajah M… Owne… Wagyu Top …  72000 <dttm [1]>   
 6     6 MUCCA Steak       Cent… Sudirman City… Tomahawk B… 940000 <dttm [1]>   
 7     7 El Machote        Cent… Menteng  Owne… Chivito Pl… 150000 <chr [1]>    
 8     8 Waroeng Steak & … Cent… Cempaka… Owne… Sirloin Do…  34545 <dttm [1]>   
 9     9 Holycow! Menteng  Cent… Menteng  Gedu… Wagyu Rib … 199000 <dttm [1]>   
10    10 Holycow! Pecenon… Cent… Pecenon… Owne… Australian… 133000 <dttm [1]>   
# ℹ 177 more rows
# ℹ 20 more variables: google_count <list>, platform_rating <list>,
#   platform_count <dbl>, specialized <chr>, beef <chr>, chicken <chr>,
#   seafood <chr>, appetizer <chr>, other_dish <chr>, dessert <chr>,
#   drinks <chr>, other_poultry <chr>, takeaway <chr>, delivery <chr>,
#   outdoor <chr>, smoking_area <chr>, alcohol_served <chr>, wifi <chr>,
#   reservation <chr>, other <chr>

3. Web Scrapping

Web scraping adalah metode pengambilan data dari sebuah website secara otomatis. Teknik ini sangat berguna dalam bisnis online, baik itu untuk riset pasar, riset kompetitor, atau mencari leads 1. Ada beberapa teknik web scraping yang umum dilakukan, yaitu:

  • Menyalin data secara manual

  • Menggunakan regular expression

  • Parsing HTML

Kali ini kita akan menggunakan fungsi read_html() untuk meng-ekstrak element tabel dari website dengan me-load package tidyverse dan rvest terlebih dahulu Misal kita akan meng-import data dari tabel website chart trending Youtube maka :

#> Load Package
library(tidyverse)
library(rvest)

#> Url data tabel
url <- "https://kworb.net/youtube/insights/id_daily.html"
html <- read_html(url)

#> Ekstrak element tabel
table <- html |> 
  html_element("table") |> 
  html_table()

#> Tampilkan Tabel
table
# A tibble: 20 × 5
     Pos `P+`  Track                                         Streams  `Streams+`
   <int> <chr> <chr>                                         <chr>    <chr>     
 1     1 NEW   THE BOYZ - Watch It                           1,869,9… ""        
 2     2 -1    Nadhif Basalamah - penjaga hati               1,610,1… "-2,263"  
 3     3 -1    Crush - Hmm-cheat                             895,489  "-304,774"
 4     4 -1    Rhoma Irama - Camelia (Live)                  843,612  "-78,972" 
 5     5 =     Ghea Indrawari - Jiwa Yang Bersedih           820,296  "-31,390" 
 6     6 -2    Omwawes - Dumes (feat. Guyon Waton)           816,163  "-57,127" 
 7     7 -1    Jaz - Bersamamu                               796,226  "+16,653" 
 8     8 -1    Anggi Marito - Tak Segampang Itu              767,570  "-8,342"  
 9     9 +3    ENHYPEN - Sweet Venom                         745,486  "+41,059" 
10    10 +1    Tri Suaka - Merayu Tuhan (feat. Dodhy Kangen) 721,369  "-11,599" 
11    11 -3    NDX A.K.A. - Nemen (Hiphop Dangdut Version)   717,462  "-50,743" 
12    12 -2    Denny Caknan - Wirang                         716,047  "-28,131" 
13    13 =     Zendaya - Rewrite The Stars                   690,921  "+2,704"  
14    14 -5    Denny Caknan - Taman Jurug (Live)             671,592  "-79,538" 
15    15 NEW   JO1 - Venus                                   654,505  ""        
16    16 =     Fabio Asher - Tanpa Rasa Bersalah             626,163  "+33,454" 
17    17 +3    Raim Laode - Komang                           610,292  "+42,604" 
18    18 -3    Seventeen - Tanpa Pesan Terakhir              598,276  "-17,893" 
19    19 -5    Masdddho - KISINAN 2                          594,158  "-81,181" 
20    20 -2    Idgitaf - Satu-Satu                           567,989  "-12,575" 
Back to top