Email             :
RPubs            : https://rpubs.com/valensiusjimy/
Jurusan          : Statistika
Address         : Jalan Promoter 41, Lengkong Gudang Timur,
                         Tanggerang Selatan, BANTEN. 15321


List

  List merupakan suatu struktur data pada R dan Python yang memiliki kemampuan untuk menyimpan lebih dari satu data, sebagai contohnya adalah array. berikut ini saya akan mencoba mengaplikasikan atau mencoba untuk membuat list mengenai pertemanan saya dengan bahasa R.

Membuat List Teman Dekat

list1 = list("Febby","Calvin","Baim","Naftali","Andreas")
print(c(list1))
## [[1]]
## [1] "Febby"
## 
## [[2]]
## [1] "Calvin"
## 
## [[3]]
## [1] "Baim"
## 
## [[4]]
## [1] "Naftali"
## 
## [[5]]
## [1] "Andreas"

Memilih Satu Teman Dengan Indeks

print(c(list1[1]))
## [[1]]
## [1] "Febby"

Menghapus dan Menambah Teman Baru

list1[2] = "Toti"
print(c(list1))
## [[1]]
## [1] "Febby"
## 
## [[2]]
## [1] "Toti"
## 
## [[3]]
## [1] "Baim"
## 
## [[4]]
## [1] "Naftali"
## 
## [[5]]
## [1] "Andreas"

Cara Menghitung Banyaknya Teman

length(list1)
## [1] 5

Tuple

  Tuple pada R dan Python merupakan suatu struktur data yang berfungsi untuk menyimpan sekumpulan data. Lalu, isi pada Tuple tidak dapat kita ubah dan dihapus.

library(sets)

# Membuat Tuple Berisi 5 Item
tuple1 = tuple("halo","babang","tamvan","ingin","lewat")
tuple2 = tuple("sini","sana","atas","bawah","belakang")
# Mengakses Nilai Tuple
print(tuple1[2])
## ("babang")
# Memotong Tuple
print(tuple1[2:5])
## ("babang", "tamvan", "ingin", "lewat")
# Nested Tuple
tuple3 = c(tuple1, tuple2)
tuple4 = rep(tuple1, 2)

print(tuple3)
## ("halo", "babang", "tamvan", "ingin", "lewat", "sini", "sana", "atas",
##  "bawah", "belakang")
print(tuple4)
## ("halo", "babang", "tamvan", "ingin", "lewat", "halo", "babang",
##  "tamvan", "ingin", "lewat")

Dictionary

  Pada R dan Python kita juga mengenal yang namanya Dictionary, yaitu struktur data yang bentuknya seperti layaknya kamus. Dictionary memiliki kunci berupa teks atau angka. Berbeda dengan list dan tuple yang menggunakan angka saja untuk mengakses nilainya.

library(Dict)
## 
## Attaching package: 'Dict'
## The following object is masked from 'package:sets':
## 
##     %>%
# Membuat dan Mengakses Nilai Dictionary
bangjeki = dict(
  nama    = "Valensius Jimy",
  umur    = 19L,
  hobi    = list("main gitar"," hobi membuat kopi","berniaga"),
  pria    = TRUE,
  sosmed  = tuple(instagram = "its_bangjekii")
) 

print(bangjeki)
## # A tibble: 5 x 2
##   key    value     
##   <chr>  <list>    
## 1 nama   <chr [1]> 
## 2 umur   <int [1]> 
## 3 hobi   <list [3]>
## 4 pria   <lgl [1]> 
## 5 sosmed <tuple>
cat("nama saya adalah", bangjeki$get('nama'))
## nama saya adalah Valensius Jimy
# Mengubah Nilai Item
bangjeki['nama'] = "Valensius Jimy Eugene Rosse"

print(bangjeki$get('nama'))
## [1] "Valensius Jimy Eugene Rosse"
# Cara Lain Akses Library
print(bangjeki$get('hobi')[2])
## [[1]]
## [1] " hobi membuat kopi"
# Menambahkan Item Pada Dictionary
bangjeki$add(motto = "hidup santuy tapi pasti") # menambahkan
print(bangjeki)
## # A tibble: 6 x 2
##   key    value     
##   <chr>  <list>    
## 1 hobi   <list [3]>
## 2 nama   <chr [1]> 
## 3 pria   <lgl [1]> 
## 4 sosmed <tuple>   
## 5 umur   <int [1]> 
## 6 motto  <chr [1]>
# Menghapus Item dari Dictionary
bangjeki$clear()

print(bangjeki)
## # A tibble: 0 x 2
## # ... with 2 variables: key <chr>, value <list>

Data Frame

  Data Frame pada R dan Python merupakan suatu tabel yang seperti array dua dimensi di mana pada setiap kolom berisi nilai dari satu variabel dan setiap baris berisi satu set nilai dari setiap kolom.

Penggunaan Data Frame Pada R

# membentuk data frame 1
df1_R <- data.frame(nomor   = c(1:5),
                    nama    = c("Jeki","Baim","Jawir","Budi","Nina"),
                    jabatan = c("Direktur","Manajer Operasional","Sales Marketing","Sales Marketing","Humas"),
                    lulusan = c("SMA","Sarjana Ekonomi","Sarjana Manajemen","Sarjana Ekonomi","Sarjana Pendidikan"),
                    agama   = c("Kristen","Kristen","Islam","Buddha","Judaisme")
)

# membentuk data frame 2
df2_R <- data.frame(nomor   = c(6:10),
                    nama    = c("Naftali","Febby","Alika","Rio","Andreas"),
                    jabatan = c("Barista","Barista","Kasir","Koki","Satpam"),
                    lulusan = c("SMA","Sarjana Ilkom","SMP","SMA","SMK"),
                    agama   = c("Kristen","Kristen","Kristen","Hindu","Islam")
)

Operasi yang dapat diperintahkan

df3_R = rbind(df1_R,df2_R) # untuk menggabungkan kedua data frame

# operasi yang dapat dilakukan pada data frame
print(df3_R)
##    nomor    nama             jabatan            lulusan    agama
## 1      1    Jeki            Direktur                SMA  Kristen
## 2      2    Baim Manajer Operasional    Sarjana Ekonomi  Kristen
## 3      3   Jawir     Sales Marketing  Sarjana Manajemen    Islam
## 4      4    Budi     Sales Marketing    Sarjana Ekonomi   Buddha
## 5      5    Nina               Humas Sarjana Pendidikan Judaisme
## 6      6 Naftali             Barista                SMA  Kristen
## 7      7   Febby             Barista      Sarjana Ilkom  Kristen
## 8      8   Alika               Kasir                SMP  Kristen
## 9      9     Rio                Koki                SMA    Hindu
## 10    10 Andreas              Satpam                SMK    Islam
head(df3_R)     #cetak 6 baris dari atas
##   nomor    nama             jabatan            lulusan    agama
## 1     1    Jeki            Direktur                SMA  Kristen
## 2     2    Baim Manajer Operasional    Sarjana Ekonomi  Kristen
## 3     3   Jawir     Sales Marketing  Sarjana Manajemen    Islam
## 4     4    Budi     Sales Marketing    Sarjana Ekonomi   Buddha
## 5     5    Nina               Humas Sarjana Pendidikan Judaisme
## 6     6 Naftali             Barista                SMA  Kristen
tail(df3_R)     #cetak 6 baris dari bawah
##    nomor    nama jabatan            lulusan    agama
## 5      5    Nina   Humas Sarjana Pendidikan Judaisme
## 6      6 Naftali Barista                SMA  Kristen
## 7      7   Febby Barista      Sarjana Ilkom  Kristen
## 8      8   Alika   Kasir                SMP  Kristen
## 9      9     Rio    Koki                SMA    Hindu
## 10    10 Andreas  Satpam                SMK    Islam
head(df3_R ,3)  #cetak 3 baris dari atas
##   nomor  nama             jabatan           lulusan   agama
## 1     1  Jeki            Direktur               SMA Kristen
## 2     2  Baim Manajer Operasional   Sarjana Ekonomi Kristen
## 3     3 Jawir     Sales Marketing Sarjana Manajemen   Islam
#View(df3_R)     #lihat data frame di Rstudio seperti exel
class(df3_R)    #lihat tipe data frame
## [1] "data.frame"
str(df3_R)      #cek struktur
## 'data.frame':    10 obs. of  5 variables:
##  $ nomor  : int  1 2 3 4 5 6 7 8 9 10
##  $ nama   : chr  "Jeki" "Baim" "Jawir" "Budi" ...
##  $ jabatan: chr  "Direktur" "Manajer Operasional" "Sales Marketing" "Sales Marketing" ...
##  $ lulusan: chr  "SMA" "Sarjana Ekonomi" "Sarjana Manajemen" "Sarjana Ekonomi" ...
##  $ agama  : chr  "Kristen" "Kristen" "Islam" "Buddha" ...
dim(df3_R)      #cek dimensi
## [1] 10  5
summary(df3_R)  #summary statistik dasar
##      nomor           nama             jabatan            lulusan         
##  Min.   : 1.00   Length:10          Length:10          Length:10         
##  1st Qu.: 3.25   Class :character   Class :character   Class :character  
##  Median : 5.50   Mode  :character   Mode  :character   Mode  :character  
##  Mean   : 5.50                                                           
##  3rd Qu.: 7.75                                                           
##  Max.   :10.00                                                           
##     agama          
##  Length:10         
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
#read.table()  atau read.csv() untuk membaca data set

Pengindeksan, Pengirisan, dan Sub-setting

Kode = (1:52)

Nama = c(LETTERS,letters)
Jenis_Kelamin = sample(rep(c("Pria","Wanita"),times=26))

tahun = seq(as.Date("1999/09/19"), by="year", length.out=4)
Tanggal_Lahir = rep(tahun,times=13)

univ1 = rep("Negeri",times=35)
univ2 = rep("Swasta",times=10)
univ3 = rep("Luar Negeri", times=7)
Universitas = sample(c(univ3,univ1,univ2))

gpa <- runif(52, min=3.50, max=4.00)
GPA <- round(gpa, digits=2)

Gaji<- sample(600:1200,52,replace=T)

Karyawan_R = data.frame(Kode,
                        Nama,
                        Jenis_Kelamin,
                        Tanggal_Lahir,
                        Universitas,
                        GPA,
                        Gaji)

print(Karyawan_R)
##    Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas  GPA Gaji
## 1     1    A        Wanita    1999-09-19      Swasta 3.66 1042
## 2     2    B          Pria    2000-09-19      Negeri 3.77 1097
## 3     3    C          Pria    2001-09-19      Swasta 3.95  935
## 4     4    D        Wanita    2002-09-19      Negeri 3.76  662
## 5     5    E        Wanita    1999-09-19      Negeri 3.60  776
## 6     6    F          Pria    2000-09-19      Negeri 3.54  937
## 7     7    G        Wanita    2001-09-19      Swasta 3.62  940
## 8     8    H        Wanita    2002-09-19      Negeri 3.55  690
## 9     9    I          Pria    1999-09-19      Negeri 3.66 1067
## 10   10    J          Pria    2000-09-19 Luar Negeri 3.81  693
## 11   11    K          Pria    2001-09-19      Swasta 3.78  988
## 12   12    L        Wanita    2002-09-19      Negeri 3.73  977
## 13   13    M        Wanita    1999-09-19      Swasta 3.60  876
## 14   14    N        Wanita    2000-09-19      Negeri 3.79  888
## 15   15    O        Wanita    2001-09-19      Negeri 3.88  688
## 16   16    P          Pria    2002-09-19      Swasta 3.79  878
## 17   17    Q        Wanita    1999-09-19      Negeri 3.88 1174
## 18   18    R        Wanita    2000-09-19      Swasta 3.87  891
## 19   19    S        Wanita    2001-09-19      Negeri 3.74  844
## 20   20    T          Pria    2002-09-19 Luar Negeri 3.99  664
## 21   21    U        Wanita    1999-09-19      Negeri 3.53  781
## 22   22    V          Pria    2000-09-19      Negeri 3.51  750
## 23   23    W          Pria    2001-09-19      Negeri 3.84  670
## 24   24    X        Wanita    2002-09-19      Negeri 3.71 1066
## 25   25    Y          Pria    1999-09-19 Luar Negeri 3.50  955
## 26   26    Z        Wanita    2000-09-19      Negeri 3.78 1004
## 27   27    a        Wanita    2001-09-19      Negeri 3.51 1044
## 28   28    b          Pria    2002-09-19 Luar Negeri 3.52  917
## 29   29    c          Pria    1999-09-19      Negeri 3.90 1124
## 30   30    d        Wanita    2000-09-19      Swasta 3.72  843
## 31   31    e          Pria    2001-09-19      Negeri 3.75  869
## 32   32    f          Pria    2002-09-19 Luar Negeri 3.70  826
## 33   33    g        Wanita    1999-09-19      Negeri 3.57  892
## 34   34    h          Pria    2000-09-19      Negeri 3.65  891
## 35   35    i        Wanita    2001-09-19      Negeri 3.96  608
## 36   36    j          Pria    2002-09-19      Negeri 3.66 1087
## 37   37    k          Pria    1999-09-19      Swasta 3.77  663
## 38   38    l        Wanita    2000-09-19      Negeri 3.56 1177
## 39   39    m        Wanita    2001-09-19      Negeri 3.73 1023
## 40   40    n          Pria    2002-09-19      Swasta 3.85  716
## 41   41    o        Wanita    1999-09-19      Negeri 3.77  689
## 42   42    p        Wanita    2000-09-19      Negeri 3.89 1093
## 43   43    q          Pria    2001-09-19      Negeri 3.92 1123
## 44   44    r        Wanita    2002-09-19      Negeri 3.84  988
## 45   45    s          Pria    1999-09-19      Negeri 3.87  777
## 46   46    t        Wanita    2000-09-19      Negeri 3.65  775
## 47   47    u          Pria    2001-09-19      Negeri 3.84  795
## 48   48    v          Pria    2002-09-19      Negeri 3.95  690
## 49   49    w          Pria    1999-09-19 Luar Negeri 3.79  856
## 50   50    x        Wanita    2000-09-19      Negeri 3.85 1112
## 51   51    y          Pria    2001-09-19 Luar Negeri 3.53 1055
## 52   52    z          Pria    2002-09-19      Negeri 3.68  979
typeof(Karyawan_R)
## [1] "list"
Karyawan_R[1:5]                     # ekstrak baris ke-1 sampai kolom ke-5
##    Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas
## 1     1    A        Wanita    1999-09-19      Swasta
## 2     2    B          Pria    2000-09-19      Negeri
## 3     3    C          Pria    2001-09-19      Swasta
## 4     4    D        Wanita    2002-09-19      Negeri
## 5     5    E        Wanita    1999-09-19      Negeri
## 6     6    F          Pria    2000-09-19      Negeri
## 7     7    G        Wanita    2001-09-19      Swasta
## 8     8    H        Wanita    2002-09-19      Negeri
## 9     9    I          Pria    1999-09-19      Negeri
## 10   10    J          Pria    2000-09-19 Luar Negeri
## 11   11    K          Pria    2001-09-19      Swasta
## 12   12    L        Wanita    2002-09-19      Negeri
## 13   13    M        Wanita    1999-09-19      Swasta
## 14   14    N        Wanita    2000-09-19      Negeri
## 15   15    O        Wanita    2001-09-19      Negeri
## 16   16    P          Pria    2002-09-19      Swasta
## 17   17    Q        Wanita    1999-09-19      Negeri
## 18   18    R        Wanita    2000-09-19      Swasta
## 19   19    S        Wanita    2001-09-19      Negeri
## 20   20    T          Pria    2002-09-19 Luar Negeri
## 21   21    U        Wanita    1999-09-19      Negeri
## 22   22    V          Pria    2000-09-19      Negeri
## 23   23    W          Pria    2001-09-19      Negeri
## 24   24    X        Wanita    2002-09-19      Negeri
## 25   25    Y          Pria    1999-09-19 Luar Negeri
## 26   26    Z        Wanita    2000-09-19      Negeri
## 27   27    a        Wanita    2001-09-19      Negeri
## 28   28    b          Pria    2002-09-19 Luar Negeri
## 29   29    c          Pria    1999-09-19      Negeri
## 30   30    d        Wanita    2000-09-19      Swasta
## 31   31    e          Pria    2001-09-19      Negeri
## 32   32    f          Pria    2002-09-19 Luar Negeri
## 33   33    g        Wanita    1999-09-19      Negeri
## 34   34    h          Pria    2000-09-19      Negeri
## 35   35    i        Wanita    2001-09-19      Negeri
## 36   36    j          Pria    2002-09-19      Negeri
## 37   37    k          Pria    1999-09-19      Swasta
## 38   38    l        Wanita    2000-09-19      Negeri
## 39   39    m        Wanita    2001-09-19      Negeri
## 40   40    n          Pria    2002-09-19      Swasta
## 41   41    o        Wanita    1999-09-19      Negeri
## 42   42    p        Wanita    2000-09-19      Negeri
## 43   43    q          Pria    2001-09-19      Negeri
## 44   44    r        Wanita    2002-09-19      Negeri
## 45   45    s          Pria    1999-09-19      Negeri
## 46   46    t        Wanita    2000-09-19      Negeri
## 47   47    u          Pria    2001-09-19      Negeri
## 48   48    v          Pria    2002-09-19      Negeri
## 49   49    w          Pria    1999-09-19 Luar Negeri
## 50   50    x        Wanita    2000-09-19      Negeri
## 51   51    y          Pria    2001-09-19 Luar Negeri
## 52   52    z          Pria    2002-09-19      Negeri
Karyawan_R$Gaji                     # ekstrak spesifik kolom
##  [1] 1042 1097  935  662  776  937  940  690 1067  693  988  977  876  888  688
## [16]  878 1174  891  844  664  781  750  670 1066  955 1004 1044  917 1124  843
## [31]  869  826  892  891  608 1087  663 1177 1023  716  689 1093 1123  988  777
## [46]  775  795  690  856 1112 1055  979
Karyawan_R[c('Nama','Universitas')] # ekstrak lebih dari satu elemen
##    Nama Universitas
## 1     A      Swasta
## 2     B      Negeri
## 3     C      Swasta
## 4     D      Negeri
## 5     E      Negeri
## 6     F      Negeri
## 7     G      Swasta
## 8     H      Negeri
## 9     I      Negeri
## 10    J Luar Negeri
## 11    K      Swasta
## 12    L      Negeri
## 13    M      Swasta
## 14    N      Negeri
## 15    O      Negeri
## 16    P      Swasta
## 17    Q      Negeri
## 18    R      Swasta
## 19    S      Negeri
## 20    T Luar Negeri
## 21    U      Negeri
## 22    V      Negeri
## 23    W      Negeri
## 24    X      Negeri
## 25    Y Luar Negeri
## 26    Z      Negeri
## 27    a      Negeri
## 28    b Luar Negeri
## 29    c      Negeri
## 30    d      Swasta
## 31    e      Negeri
## 32    f Luar Negeri
## 33    g      Negeri
## 34    h      Negeri
## 35    i      Negeri
## 36    j      Negeri
## 37    k      Swasta
## 38    l      Negeri
## 39    m      Negeri
## 40    n      Swasta
## 41    o      Negeri
## 42    p      Negeri
## 43    q      Negeri
## 44    r      Negeri
## 45    s      Negeri
## 46    t      Negeri
## 47    u      Negeri
## 48    v      Negeri
## 49    w Luar Negeri
## 50    x      Negeri
## 51    y Luar Negeri
## 52    z      Negeri
Karyawan_R[,1:5]                    # ekstrak 5 kolom pertama
##    Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas
## 1     1    A        Wanita    1999-09-19      Swasta
## 2     2    B          Pria    2000-09-19      Negeri
## 3     3    C          Pria    2001-09-19      Swasta
## 4     4    D        Wanita    2002-09-19      Negeri
## 5     5    E        Wanita    1999-09-19      Negeri
## 6     6    F          Pria    2000-09-19      Negeri
## 7     7    G        Wanita    2001-09-19      Swasta
## 8     8    H        Wanita    2002-09-19      Negeri
## 9     9    I          Pria    1999-09-19      Negeri
## 10   10    J          Pria    2000-09-19 Luar Negeri
## 11   11    K          Pria    2001-09-19      Swasta
## 12   12    L        Wanita    2002-09-19      Negeri
## 13   13    M        Wanita    1999-09-19      Swasta
## 14   14    N        Wanita    2000-09-19      Negeri
## 15   15    O        Wanita    2001-09-19      Negeri
## 16   16    P          Pria    2002-09-19      Swasta
## 17   17    Q        Wanita    1999-09-19      Negeri
## 18   18    R        Wanita    2000-09-19      Swasta
## 19   19    S        Wanita    2001-09-19      Negeri
## 20   20    T          Pria    2002-09-19 Luar Negeri
## 21   21    U        Wanita    1999-09-19      Negeri
## 22   22    V          Pria    2000-09-19      Negeri
## 23   23    W          Pria    2001-09-19      Negeri
## 24   24    X        Wanita    2002-09-19      Negeri
## 25   25    Y          Pria    1999-09-19 Luar Negeri
## 26   26    Z        Wanita    2000-09-19      Negeri
## 27   27    a        Wanita    2001-09-19      Negeri
## 28   28    b          Pria    2002-09-19 Luar Negeri
## 29   29    c          Pria    1999-09-19      Negeri
## 30   30    d        Wanita    2000-09-19      Swasta
## 31   31    e          Pria    2001-09-19      Negeri
## 32   32    f          Pria    2002-09-19 Luar Negeri
## 33   33    g        Wanita    1999-09-19      Negeri
## 34   34    h          Pria    2000-09-19      Negeri
## 35   35    i        Wanita    2001-09-19      Negeri
## 36   36    j          Pria    2002-09-19      Negeri
## 37   37    k          Pria    1999-09-19      Swasta
## 38   38    l        Wanita    2000-09-19      Negeri
## 39   39    m        Wanita    2001-09-19      Negeri
## 40   40    n          Pria    2002-09-19      Swasta
## 41   41    o        Wanita    1999-09-19      Negeri
## 42   42    p        Wanita    2000-09-19      Negeri
## 43   43    q          Pria    2001-09-19      Negeri
## 44   44    r        Wanita    2002-09-19      Negeri
## 45   45    s          Pria    1999-09-19      Negeri
## 46   46    t        Wanita    2000-09-19      Negeri
## 47   47    u          Pria    2001-09-19      Negeri
## 48   48    v          Pria    2002-09-19      Negeri
## 49   49    w          Pria    1999-09-19 Luar Negeri
## 50   50    x        Wanita    2000-09-19      Negeri
## 51   51    y          Pria    2001-09-19 Luar Negeri
## 52   52    z          Pria    2002-09-19      Negeri
Karyawan_R[1:5,]                    # ekstrak 5 baris pertama
##   Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas  GPA Gaji
## 1    1    A        Wanita    1999-09-19      Swasta 3.66 1042
## 2    2    B          Pria    2000-09-19      Negeri 3.77 1097
## 3    3    C          Pria    2001-09-19      Swasta 3.95  935
## 4    4    D        Wanita    2002-09-19      Negeri 3.76  662
## 5    5    E        Wanita    1999-09-19      Negeri 3.60  776
#ekstrak kolom ke 1 dan 3
subset(Karyawan_R, select=c(1,3))
##    Kode Jenis_Kelamin
## 1     1        Wanita
## 2     2          Pria
## 3     3          Pria
## 4     4        Wanita
## 5     5        Wanita
## 6     6          Pria
## 7     7        Wanita
## 8     8        Wanita
## 9     9          Pria
## 10   10          Pria
## 11   11          Pria
## 12   12        Wanita
## 13   13        Wanita
## 14   14        Wanita
## 15   15        Wanita
## 16   16          Pria
## 17   17        Wanita
## 18   18        Wanita
## 19   19        Wanita
## 20   20          Pria
## 21   21        Wanita
## 22   22          Pria
## 23   23          Pria
## 24   24        Wanita
## 25   25          Pria
## 26   26        Wanita
## 27   27        Wanita
## 28   28          Pria
## 29   29          Pria
## 30   30        Wanita
## 31   31          Pria
## 32   32          Pria
## 33   33        Wanita
## 34   34          Pria
## 35   35        Wanita
## 36   36          Pria
## 37   37          Pria
## 38   38        Wanita
## 39   39        Wanita
## 40   40          Pria
## 41   41        Wanita
## 42   42        Wanita
## 43   43          Pria
## 44   44        Wanita
## 45   45          Pria
## 46   46        Wanita
## 47   47          Pria
## 48   48          Pria
## 49   49          Pria
## 50   50        Wanita
## 51   51          Pria
## 52   52          Pria
Karyawan_R$Pajak = Karyawan_R$Gaji*0.1
Karyawan_R$Gaji_Bersih = Karyawan_R$Gaji-Karyawan_R$Pajak
Karyawan_R$Gaji_Group1 = Karyawan_R$Gaji > 900
Karyawan_R$Gaji_Group2 = ifelse(Karyawan_R$Gaji > 900,
                                "Gaji Besar",
                                "Gaji Kecil")
Karyawan_R$Gaji_Group3 = factor(Karyawan_R$GPA >3.3 & 
                                Karyawan_R$Gaji> 900,
                                label = c("level 11","level 12"))

min(Karyawan_R$Gaji)
## [1] 608
max(Karyawan_R$Gaji)
## [1] 1177
mean(Karyawan_R$Gaji)
## [1] 895.0962
var(Karyawan_R$Gaji)             
## [1] 24685.46
sd(Karyawan_R$Gaji)              
## [1] 157.1161
summary(Karyawan_R$Gaji)        
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   608.0   775.8   891.0   895.1  1027.8  1177.0

Membuat Operasi Ganti Nama Variabel

rename_1 <- Karyawan_R

names(rename_1)<- c( "nomor",
                     "nama",
                     "tgl.lahir",
                     "jenis.kelamin",
                     "univ",
                     "ipk",
                     "gaji")

rename_1
##    nomor nama tgl.lahir jenis.kelamin        univ  ipk gaji    NA     NA    NA
## 1      1    A    Wanita    1999-09-19      Swasta 3.66 1042 104.2  937.8  TRUE
## 2      2    B      Pria    2000-09-19      Negeri 3.77 1097 109.7  987.3  TRUE
## 3      3    C      Pria    2001-09-19      Swasta 3.95  935  93.5  841.5  TRUE
## 4      4    D    Wanita    2002-09-19      Negeri 3.76  662  66.2  595.8 FALSE
## 5      5    E    Wanita    1999-09-19      Negeri 3.60  776  77.6  698.4 FALSE
## 6      6    F      Pria    2000-09-19      Negeri 3.54  937  93.7  843.3  TRUE
## 7      7    G    Wanita    2001-09-19      Swasta 3.62  940  94.0  846.0  TRUE
## 8      8    H    Wanita    2002-09-19      Negeri 3.55  690  69.0  621.0 FALSE
## 9      9    I      Pria    1999-09-19      Negeri 3.66 1067 106.7  960.3  TRUE
## 10    10    J      Pria    2000-09-19 Luar Negeri 3.81  693  69.3  623.7 FALSE
## 11    11    K      Pria    2001-09-19      Swasta 3.78  988  98.8  889.2  TRUE
## 12    12    L    Wanita    2002-09-19      Negeri 3.73  977  97.7  879.3  TRUE
## 13    13    M    Wanita    1999-09-19      Swasta 3.60  876  87.6  788.4 FALSE
## 14    14    N    Wanita    2000-09-19      Negeri 3.79  888  88.8  799.2 FALSE
## 15    15    O    Wanita    2001-09-19      Negeri 3.88  688  68.8  619.2 FALSE
## 16    16    P      Pria    2002-09-19      Swasta 3.79  878  87.8  790.2 FALSE
## 17    17    Q    Wanita    1999-09-19      Negeri 3.88 1174 117.4 1056.6  TRUE
## 18    18    R    Wanita    2000-09-19      Swasta 3.87  891  89.1  801.9 FALSE
## 19    19    S    Wanita    2001-09-19      Negeri 3.74  844  84.4  759.6 FALSE
## 20    20    T      Pria    2002-09-19 Luar Negeri 3.99  664  66.4  597.6 FALSE
## 21    21    U    Wanita    1999-09-19      Negeri 3.53  781  78.1  702.9 FALSE
## 22    22    V      Pria    2000-09-19      Negeri 3.51  750  75.0  675.0 FALSE
## 23    23    W      Pria    2001-09-19      Negeri 3.84  670  67.0  603.0 FALSE
## 24    24    X    Wanita    2002-09-19      Negeri 3.71 1066 106.6  959.4  TRUE
## 25    25    Y      Pria    1999-09-19 Luar Negeri 3.50  955  95.5  859.5  TRUE
## 26    26    Z    Wanita    2000-09-19      Negeri 3.78 1004 100.4  903.6  TRUE
## 27    27    a    Wanita    2001-09-19      Negeri 3.51 1044 104.4  939.6  TRUE
## 28    28    b      Pria    2002-09-19 Luar Negeri 3.52  917  91.7  825.3  TRUE
## 29    29    c      Pria    1999-09-19      Negeri 3.90 1124 112.4 1011.6  TRUE
## 30    30    d    Wanita    2000-09-19      Swasta 3.72  843  84.3  758.7 FALSE
## 31    31    e      Pria    2001-09-19      Negeri 3.75  869  86.9  782.1 FALSE
## 32    32    f      Pria    2002-09-19 Luar Negeri 3.70  826  82.6  743.4 FALSE
## 33    33    g    Wanita    1999-09-19      Negeri 3.57  892  89.2  802.8 FALSE
## 34    34    h      Pria    2000-09-19      Negeri 3.65  891  89.1  801.9 FALSE
## 35    35    i    Wanita    2001-09-19      Negeri 3.96  608  60.8  547.2 FALSE
## 36    36    j      Pria    2002-09-19      Negeri 3.66 1087 108.7  978.3  TRUE
## 37    37    k      Pria    1999-09-19      Swasta 3.77  663  66.3  596.7 FALSE
## 38    38    l    Wanita    2000-09-19      Negeri 3.56 1177 117.7 1059.3  TRUE
## 39    39    m    Wanita    2001-09-19      Negeri 3.73 1023 102.3  920.7  TRUE
## 40    40    n      Pria    2002-09-19      Swasta 3.85  716  71.6  644.4 FALSE
## 41    41    o    Wanita    1999-09-19      Negeri 3.77  689  68.9  620.1 FALSE
## 42    42    p    Wanita    2000-09-19      Negeri 3.89 1093 109.3  983.7  TRUE
## 43    43    q      Pria    2001-09-19      Negeri 3.92 1123 112.3 1010.7  TRUE
## 44    44    r    Wanita    2002-09-19      Negeri 3.84  988  98.8  889.2  TRUE
## 45    45    s      Pria    1999-09-19      Negeri 3.87  777  77.7  699.3 FALSE
## 46    46    t    Wanita    2000-09-19      Negeri 3.65  775  77.5  697.5 FALSE
## 47    47    u      Pria    2001-09-19      Negeri 3.84  795  79.5  715.5 FALSE
## 48    48    v      Pria    2002-09-19      Negeri 3.95  690  69.0  621.0 FALSE
## 49    49    w      Pria    1999-09-19 Luar Negeri 3.79  856  85.6  770.4 FALSE
## 50    50    x    Wanita    2000-09-19      Negeri 3.85 1112 111.2 1000.8  TRUE
## 51    51    y      Pria    2001-09-19 Luar Negeri 3.53 1055 105.5  949.5  TRUE
## 52    52    z      Pria    2002-09-19      Negeri 3.68  979  97.9  881.1  TRUE
##            NA       NA
## 1  Gaji Besar level 12
## 2  Gaji Besar level 12
## 3  Gaji Besar level 12
## 4  Gaji Kecil level 11
## 5  Gaji Kecil level 11
## 6  Gaji Besar level 12
## 7  Gaji Besar level 12
## 8  Gaji Kecil level 11
## 9  Gaji Besar level 12
## 10 Gaji Kecil level 11
## 11 Gaji Besar level 12
## 12 Gaji Besar level 12
## 13 Gaji Kecil level 11
## 14 Gaji Kecil level 11
## 15 Gaji Kecil level 11
## 16 Gaji Kecil level 11
## 17 Gaji Besar level 12
## 18 Gaji Kecil level 11
## 19 Gaji Kecil level 11
## 20 Gaji Kecil level 11
## 21 Gaji Kecil level 11
## 22 Gaji Kecil level 11
## 23 Gaji Kecil level 11
## 24 Gaji Besar level 12
## 25 Gaji Besar level 12
## 26 Gaji Besar level 12
## 27 Gaji Besar level 12
## 28 Gaji Besar level 12
## 29 Gaji Besar level 12
## 30 Gaji Kecil level 11
## 31 Gaji Kecil level 11
## 32 Gaji Kecil level 11
## 33 Gaji Kecil level 11
## 34 Gaji Kecil level 11
## 35 Gaji Kecil level 11
## 36 Gaji Besar level 12
## 37 Gaji Kecil level 11
## 38 Gaji Besar level 12
## 39 Gaji Besar level 12
## 40 Gaji Kecil level 11
## 41 Gaji Kecil level 11
## 42 Gaji Besar level 12
## 43 Gaji Besar level 12
## 44 Gaji Besar level 12
## 45 Gaji Kecil level 11
## 46 Gaji Kecil level 11
## 47 Gaji Kecil level 11
## 48 Gaji Kecil level 11
## 49 Gaji Kecil level 11
## 50 Gaji Besar level 12
## 51 Gaji Besar level 12
## 52 Gaji Besar level 12
LS0tDQp0aXRsZTogIk1lbmdlbmFsIFN0cnVrdHVyIERhdGEiDQpzdWJ0aXRsZTogIlR1Z2FzIDMiDQphdXRob3I6ICJWYWxlbnNpdXMgSmlteSAoMjAyMTQ5MjAwMDUpIg0KZGF0ZTogImByIGZvcm1hdChTeXMuRGF0ZSgpLCAnJUIgJWQsICVZJylgIg0Kb3V0cHV0OiANCiAgaHRtbF9kb2N1bWVudDogDQogICAgaHRtbF9kb2N1bWVudDogbnVsbA0KICAgIGNvZGVfZm9sZGluZzogaGlkZQ0KICAgIHRvYzogeWVzDQogICAgdG9jX2Zsb2F0Og0KICAgICAgY29sbGFwc2VkOiB5ZXMNCiAgICBudW1iZXJfc2VjdGlvbnM6IG5vDQogICAgY29kZV9kb3dubG9hZDogeWVzDQogICAgdGhlbWU6IHNhbmRzdG9uZQ0KICAgIGNzczogc3R5bGUxLmNzcw0KICAgIGhpZ2hsaWdodDogbW9ub2Nocm9tZQ0KLS0tDQoNCg0KPGltZyBzdHlsZT0iZmxvYXQ6IHJpZ2h0OyBtYXJnaW46IDBweCAxMDBweCAwcHggMHB4OyB3aWR0aDoyNSUiIHNyYz0ibXlmb3RvLmpwZyIvPiANCg0KYGBge3IgbG9nbywgZWNobz1GQUxTRSxmaWcuYWxpZ249J2NlbnRlcicsIG91dC53aWR0aCA9ICczMCUnfQ0Ka25pdHI6OmluY2x1ZGVfZ3JhcGhpY3MoIm1hdGFuYS5wbmciKQ0KYGBgDQoNCkVtYWlsICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOzogIHZhbGVuc2l1c2ppbXkyN0BnbWFpbC5jb20gPGJyPg0KUlB1YnMgICZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOzogaHR0cHM6Ly9ycHVicy5jb20vdmFsZW5zaXVzamlteS8gPGJyPg0KSnVydXNhbiAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7OiBbU3RhdGlzdGlrYV0oaHR0cHM6Ly9tYXRhbmF1bml2ZXJzaXR5LmFjLmlkLz9seT1hY2FkZW1pYyZjPXNiKSA8YnI+DQpBZGRyZXNzICAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgOiBKYWxhbiBQcm9tb3RlciA0MSwgTGVuZ2tvbmcgR3VkYW5nIFRpbXVyLCA8YnI+DQombmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyZuYnNwOyBUYW5nZ2VyYW5nIFNlbGF0YW4sIEJBTlRFTi4gMTUzMjENCg0KKioqKg0KIyBMaXN0DQoNCiZuYnNwOyBMaXN0IG1lcnVwYWthbiBzdWF0dSBzdHJ1a3R1ciBkYXRhIHBhZGEgUiBkYW4gUHl0aG9uIHlhbmcgbWVtaWxpa2kga2VtYW1wdWFuIHVudHVrIG1lbnlpbXBhbiBsZWJpaCBkYXJpIHNhdHUgZGF0YSwgc2ViYWdhaSBjb250b2hueWEgYWRhbGFoIGFycmF5LiBiZXJpa3V0IGluaSBzYXlhIGFrYW4gbWVuY29iYSBtZW5nYXBsaWthc2lrYW4gYXRhdSBtZW5jb2JhIHVudHVrIG1lbWJ1YXQgbGlzdCBtZW5nZW5haSBwZXJ0ZW1hbmFuIHNheWEgZGVuZ2FuIGJhaGFzYSBSLiANCg0KDQojIyBNZW1idWF0IExpc3QgVGVtYW4gRGVrYXQNCg0KYGBge3J9DQpsaXN0MSA9IGxpc3QoIkZlYmJ5IiwiQ2FsdmluIiwiQmFpbSIsIk5hZnRhbGkiLCJBbmRyZWFzIikNCnByaW50KGMobGlzdDEpKQ0KYGBgDQoNCiMjIE1lbWlsaWggU2F0dSBUZW1hbiBEZW5nYW4gSW5kZWtzDQoNCmBgYHtyfQ0KcHJpbnQoYyhsaXN0MVsxXSkpDQpgYGANCg0KIyMgTWVuZ2hhcHVzIGRhbiBNZW5hbWJhaCBUZW1hbiBCYXJ1DQoNCmBgYHtyfQ0KbGlzdDFbMl0gPSAiVG90aSINCnByaW50KGMobGlzdDEpKQ0KYGBgDQoNCiMjIENhcmEgTWVuZ2hpdHVuZyBCYW55YWtueWEgVGVtYW4NCg0KYGBge3J9DQpsZW5ndGgobGlzdDEpDQpgYGANCg0KDQojIFR1cGxlDQoNCiZuYnNwOyBUdXBsZSBwYWRhIFIgZGFuIFB5dGhvbiBtZXJ1cGFrYW4gc3VhdHUgc3RydWt0dXIgZGF0YSB5YW5nIGJlcmZ1bmdzaSB1bnR1ayBtZW55aW1wYW4gc2VrdW1wdWxhbiBkYXRhLiBMYWx1LCBpc2kgcGFkYSBUdXBsZSB0aWRhayBkYXBhdCBraXRhIHViYWggZGFuIGRpaGFwdXMuIA0KDQpgYGB7cn0NCmxpYnJhcnkoc2V0cykNCg0KIyBNZW1idWF0IFR1cGxlIEJlcmlzaSA1IEl0ZW0NCnR1cGxlMSA9IHR1cGxlKCJoYWxvIiwiYmFiYW5nIiwidGFtdmFuIiwiaW5naW4iLCJsZXdhdCIpDQp0dXBsZTIgPSB0dXBsZSgic2luaSIsInNhbmEiLCJhdGFzIiwiYmF3YWgiLCJiZWxha2FuZyIpDQpgYGANCg0KYGBge3J9DQojIE1lbmdha3NlcyBOaWxhaSBUdXBsZQ0KcHJpbnQodHVwbGUxWzJdKQ0KYGBgDQoNCmBgYHtyfQ0KIyBNZW1vdG9uZyBUdXBsZQ0KcHJpbnQodHVwbGUxWzI6NV0pDQpgYGANCg0KYGBge3J9DQojIE5lc3RlZCBUdXBsZQ0KdHVwbGUzID0gYyh0dXBsZTEsIHR1cGxlMikNCnR1cGxlNCA9IHJlcCh0dXBsZTEsIDIpDQoNCnByaW50KHR1cGxlMykNCnByaW50KHR1cGxlNCkNCmBgYA0KDQoNCiMgRGljdGlvbmFyeQ0KDQombmJzcDsgUGFkYSBSIGRhbiBQeXRob24ga2l0YSBqdWdhIG1lbmdlbmFsIHlhbmcgbmFtYW55YSBEaWN0aW9uYXJ5LCB5YWl0dSBzdHJ1a3R1ciBkYXRhIHlhbmcgYmVudHVrbnlhIHNlcGVydGkgbGF5YWtueWEga2FtdXMuIERpY3Rpb25hcnkgbWVtaWxpa2kga3VuY2kgYmVydXBhIHRla3MgYXRhdSBhbmdrYS4gQmVyYmVkYSBkZW5nYW4gKmxpc3QqIGRhbiAqdHVwbGUqIHlhbmcgbWVuZ2d1bmFrYW4gYW5na2Egc2FqYSB1bnR1ayBtZW5nYWtzZXMgbmlsYWlueWEuIA0KDQpgYGB7cn0NCmxpYnJhcnkoRGljdCkNCg0KIyBNZW1idWF0IGRhbiBNZW5nYWtzZXMgTmlsYWkgRGljdGlvbmFyeQ0KYmFuZ2pla2kgPSBkaWN0KA0KICBuYW1hICAgID0gIlZhbGVuc2l1cyBKaW15IiwNCiAgdW11ciAgICA9IDE5TCwNCiAgaG9iaSAgICA9IGxpc3QoIm1haW4gZ2l0YXIiLCIgaG9iaSBtZW1idWF0IGtvcGkiLCJiZXJuaWFnYSIpLA0KICBwcmlhICAgID0gVFJVRSwNCiAgc29zbWVkICA9IHR1cGxlKGluc3RhZ3JhbSA9ICJpdHNfYmFuZ2pla2lpIikNCikgDQoNCnByaW50KGJhbmdqZWtpKQ0KDQpjYXQoIm5hbWEgc2F5YSBhZGFsYWgiLCBiYW5namVraSRnZXQoJ25hbWEnKSkNCmBgYA0KDQpgYGB7cn0NCiMgTWVuZ3ViYWggTmlsYWkgSXRlbQ0KYmFuZ2pla2lbJ25hbWEnXSA9ICJWYWxlbnNpdXMgSmlteSBFdWdlbmUgUm9zc2UiDQoNCnByaW50KGJhbmdqZWtpJGdldCgnbmFtYScpKQ0KYGBgDQoNCmBgYHtyfQ0KIyBDYXJhIExhaW4gQWtzZXMgTGlicmFyeQ0KcHJpbnQoYmFuZ2pla2kkZ2V0KCdob2JpJylbMl0pDQpgYGANCg0KYGBge3J9DQojIE1lbmFtYmFoa2FuIEl0ZW0gUGFkYSBEaWN0aW9uYXJ5DQpiYW5namVraSRhZGQobW90dG8gPSAiaGlkdXAgc2FudHV5IHRhcGkgcGFzdGkiKSAjIG1lbmFtYmFoa2FuDQpwcmludChiYW5namVraSkNCmBgYA0KDQpgYGB7cn0NCiMgTWVuZ2hhcHVzIEl0ZW0gZGFyaSBEaWN0aW9uYXJ5DQpiYW5namVraSRjbGVhcigpDQoNCnByaW50KGJhbmdqZWtpKQ0KYGBgDQoNCg0KIyBEYXRhIEZyYW1lDQoNCiZuYnNwOyBEYXRhIEZyYW1lIHBhZGEgUiBkYW4gUHl0aG9uIG1lcnVwYWthbiBzdWF0dSB0YWJlbCB5YW5nIHNlcGVydGkgYXJyYXkgZHVhIGRpbWVuc2kgZGkgbWFuYSBwYWRhIHNldGlhcCBrb2xvbSBiZXJpc2kgbmlsYWkgZGFyaSBzYXR1IHZhcmlhYmVsIGRhbiBzZXRpYXAgYmFyaXMgYmVyaXNpIHNhdHUgc2V0IG5pbGFpIGRhcmkgc2V0aWFwIGtvbG9tLg0KDQojIyBQZW5nZ3VuYWFuIERhdGEgRnJhbWUgUGFkYSBSDQoNCmBgYHtyfQ0KIyBtZW1iZW50dWsgZGF0YSBmcmFtZSAxDQpkZjFfUiA8LSBkYXRhLmZyYW1lKG5vbW9yICAgPSBjKDE6NSksDQogICAgICAgICAgICAgICAgICAgIG5hbWEgICAgPSBjKCJKZWtpIiwiQmFpbSIsIkphd2lyIiwiQnVkaSIsIk5pbmEiKSwNCiAgICAgICAgICAgICAgICAgICAgamFiYXRhbiA9IGMoIkRpcmVrdHVyIiwiTWFuYWplciBPcGVyYXNpb25hbCIsIlNhbGVzIE1hcmtldGluZyIsIlNhbGVzIE1hcmtldGluZyIsIkh1bWFzIiksDQogICAgICAgICAgICAgICAgICAgIGx1bHVzYW4gPSBjKCJTTUEiLCJTYXJqYW5hIEVrb25vbWkiLCJTYXJqYW5hIE1hbmFqZW1lbiIsIlNhcmphbmEgRWtvbm9taSIsIlNhcmphbmEgUGVuZGlkaWthbiIpLA0KICAgICAgICAgICAgICAgICAgICBhZ2FtYSAgID0gYygiS3Jpc3RlbiIsIktyaXN0ZW4iLCJJc2xhbSIsIkJ1ZGRoYSIsIkp1ZGFpc21lIikNCikNCg0KIyBtZW1iZW50dWsgZGF0YSBmcmFtZSAyDQpkZjJfUiA8LSBkYXRhLmZyYW1lKG5vbW9yICAgPSBjKDY6MTApLA0KICAgICAgICAgICAgICAgICAgICBuYW1hICAgID0gYygiTmFmdGFsaSIsIkZlYmJ5IiwiQWxpa2EiLCJSaW8iLCJBbmRyZWFzIiksDQogICAgICAgICAgICAgICAgICAgIGphYmF0YW4gPSBjKCJCYXJpc3RhIiwiQmFyaXN0YSIsIkthc2lyIiwiS29raSIsIlNhdHBhbSIpLA0KICAgICAgICAgICAgICAgICAgICBsdWx1c2FuID0gYygiU01BIiwiU2FyamFuYSBJbGtvbSIsIlNNUCIsIlNNQSIsIlNNSyIpLA0KICAgICAgICAgICAgICAgICAgICBhZ2FtYSAgID0gYygiS3Jpc3RlbiIsIktyaXN0ZW4iLCJLcmlzdGVuIiwiSGluZHUiLCJJc2xhbSIpDQopDQpgYGANCg0KIyMjIE9wZXJhc2kgeWFuZyBkYXBhdCBkaXBlcmludGFoa2FuDQoNCmBgYHtyfQ0KZGYzX1IgPSByYmluZChkZjFfUixkZjJfUikgIyB1bnR1ayBtZW5nZ2FidW5na2FuIGtlZHVhIGRhdGEgZnJhbWUNCg0KIyBvcGVyYXNpIHlhbmcgZGFwYXQgZGlsYWt1a2FuIHBhZGEgZGF0YSBmcmFtZQ0KcHJpbnQoZGYzX1IpDQpoZWFkKGRmM19SKSAgICAgI2NldGFrIDYgYmFyaXMgZGFyaSBhdGFzDQp0YWlsKGRmM19SKSAgICAgI2NldGFrIDYgYmFyaXMgZGFyaSBiYXdhaA0KaGVhZChkZjNfUiAsMykgICNjZXRhayAzIGJhcmlzIGRhcmkgYXRhcw0KI1ZpZXcoZGYzX1IpICAgICAjbGloYXQgZGF0YSBmcmFtZSBkaSBSc3R1ZGlvIHNlcGVydGkgZXhlbA0KDQpgYGANCmBgYHtyfQ0KY2xhc3MoZGYzX1IpICAgICNsaWhhdCB0aXBlIGRhdGEgZnJhbWUNCnN0cihkZjNfUikgICAgICAjY2VrIHN0cnVrdHVyDQpkaW0oZGYzX1IpICAgICAgI2NlayBkaW1lbnNpDQpzdW1tYXJ5KGRmM19SKSAgI3N1bW1hcnkgc3RhdGlzdGlrIGRhc2FyDQojcmVhZC50YWJsZSgpICBhdGF1IHJlYWQuY3N2KCkgdW50dWsgbWVtYmFjYSBkYXRhIHNldA0KYGBgDQoNCiMjIyBQZW5naW5kZWtzYW4sIFBlbmdpcmlzYW4sIGRhbiBTdWItc2V0dGluZw0KDQpgYGB7cn0NCktvZGUgPSAoMTo1MikNCg0KTmFtYSA9IGMoTEVUVEVSUyxsZXR0ZXJzKQ0KSmVuaXNfS2VsYW1pbiA9IHNhbXBsZShyZXAoYygiUHJpYSIsIldhbml0YSIpLHRpbWVzPTI2KSkNCg0KdGFodW4gPSBzZXEoYXMuRGF0ZSgiMTk5OS8wOS8xOSIpLCBieT0ieWVhciIsIGxlbmd0aC5vdXQ9NCkNClRhbmdnYWxfTGFoaXIgPSByZXAodGFodW4sdGltZXM9MTMpDQoNCnVuaXYxID0gcmVwKCJOZWdlcmkiLHRpbWVzPTM1KQ0KdW5pdjIgPSByZXAoIlN3YXN0YSIsdGltZXM9MTApDQp1bml2MyA9IHJlcCgiTHVhciBOZWdlcmkiLCB0aW1lcz03KQ0KVW5pdmVyc2l0YXMgPSBzYW1wbGUoYyh1bml2Myx1bml2MSx1bml2MikpDQoNCmdwYSA8LSBydW5pZig1MiwgbWluPTMuNTAsIG1heD00LjAwKQ0KR1BBIDwtIHJvdW5kKGdwYSwgZGlnaXRzPTIpDQoNCkdhamk8LSBzYW1wbGUoNjAwOjEyMDAsNTIscmVwbGFjZT1UKQ0KDQpLYXJ5YXdhbl9SID0gZGF0YS5mcmFtZShLb2RlLA0KICAgICAgICAgICAgICAgICAgICAgICAgTmFtYSwNCiAgICAgICAgICAgICAgICAgICAgICAgIEplbmlzX0tlbGFtaW4sDQogICAgICAgICAgICAgICAgICAgICAgICBUYW5nZ2FsX0xhaGlyLA0KICAgICAgICAgICAgICAgICAgICAgICAgVW5pdmVyc2l0YXMsDQogICAgICAgICAgICAgICAgICAgICAgICBHUEEsDQogICAgICAgICAgICAgICAgICAgICAgICBHYWppKQ0KDQpwcmludChLYXJ5YXdhbl9SKQ0KYGBgDQoNCmBgYHtyfQ0KdHlwZW9mKEthcnlhd2FuX1IpDQoNCkthcnlhd2FuX1JbMTo1XSAgICAgICAgICAgICAgICAgICAgICMgZWtzdHJhayBiYXJpcyBrZS0xIHNhbXBhaSBrb2xvbSBrZS01DQpLYXJ5YXdhbl9SJEdhamkgICAgICAgICAgICAgICAgICAgICAjIGVrc3RyYWsgc3Blc2lmaWsga29sb20NCkthcnlhd2FuX1JbYygnTmFtYScsJ1VuaXZlcnNpdGFzJyldICMgZWtzdHJhayBsZWJpaCBkYXJpIHNhdHUgZWxlbWVuDQpLYXJ5YXdhbl9SWywxOjVdICAgICAgICAgICAgICAgICAgICAjIGVrc3RyYWsgNSBrb2xvbSBwZXJ0YW1hDQpLYXJ5YXdhbl9SWzE6NSxdICAgICAgICAgICAgICAgICAgICAjIGVrc3RyYWsgNSBiYXJpcyBwZXJ0YW1hDQoNCiNla3N0cmFrIGtvbG9tIGtlIDEgZGFuIDMNCnN1YnNldChLYXJ5YXdhbl9SLCBzZWxlY3Q9YygxLDMpKQ0KYGBgDQoNCmBgYHtyfQ0KS2FyeWF3YW5fUiRQYWphayA9IEthcnlhd2FuX1IkR2FqaSowLjENCkthcnlhd2FuX1IkR2FqaV9CZXJzaWggPSBLYXJ5YXdhbl9SJEdhamktS2FyeWF3YW5fUiRQYWphaw0KS2FyeWF3YW5fUiRHYWppX0dyb3VwMSA9IEthcnlhd2FuX1IkR2FqaSA+IDkwMA0KS2FyeWF3YW5fUiRHYWppX0dyb3VwMiA9IGlmZWxzZShLYXJ5YXdhbl9SJEdhamkgPiA5MDAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHYWppIEJlc2FyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdhamkgS2VjaWwiKQ0KS2FyeWF3YW5fUiRHYWppX0dyb3VwMyA9IGZhY3RvcihLYXJ5YXdhbl9SJEdQQSA+My4zICYgDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIEthcnlhd2FuX1IkR2FqaT4gOTAwLA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBsYWJlbCA9IGMoImxldmVsIDExIiwibGV2ZWwgMTIiKSkNCg0KbWluKEthcnlhd2FuX1IkR2FqaSkNCm1heChLYXJ5YXdhbl9SJEdhamkpDQptZWFuKEthcnlhd2FuX1IkR2FqaSkNCnZhcihLYXJ5YXdhbl9SJEdhamkpICAgICAgICAgICAgIA0Kc2QoS2FyeWF3YW5fUiRHYWppKSAgICAgICAgICAgICAgDQpzdW1tYXJ5KEthcnlhd2FuX1IkR2FqaSkgICAgICAgIA0KYGBgDQoNCg0KIyBNZW1idWF0IE9wZXJhc2kgR2FudGkgTmFtYSBWYXJpYWJlbA0KDQpgYGB7cn0NCnJlbmFtZV8xIDwtIEthcnlhd2FuX1INCg0KbmFtZXMocmVuYW1lXzEpPC0gYyggIm5vbW9yIiwNCiAgICAgICAgICAgICAgICAgICAgICJuYW1hIiwNCiAgICAgICAgICAgICAgICAgICAgICJ0Z2wubGFoaXIiLA0KICAgICAgICAgICAgICAgICAgICAgImplbmlzLmtlbGFtaW4iLA0KICAgICAgICAgICAgICAgICAgICAgInVuaXYiLA0KICAgICAgICAgICAgICAgICAgICAgImlwayIsDQogICAgICAgICAgICAgICAgICAgICAiZ2FqaSIpDQoNCnJlbmFtZV8xDQpgYGANCg0K