Email             :
RPubs            : https://rpubs.com/brigitatiaraem/
Jurusan          : Statistika
Address         : ARA Center, Matana University Tower
                         Jl. CBD Barat Kav, RT.1, Curug Sangereng, Kelapa Dua, Tangerang, Banten 15810.


1 SOAL

Membuat Program dengan List R

  • Buat sebuah list untuk menyimpan 5 orang teman dekatmu

  • Pilihlah satu orang dari list tersebut yang menjadi teman paling dekatmu dengan menggunakan index

  • Gantilah satu orang yang tidak begitu dekat denganmu dengan teman baru yang kamu temui baru-baru ini

  • Bagaimana caranya anda menghitung banyak teman yang ada dalam list tersebut

jaawaban :

point 1

list0=list()
list1=list("clara","yosia","karen","naufal","garry")        # membuat list dengan 5 nama teman
print(c(list0,list1))   # print list 1 yang telah dibuat
## [[1]]
## [1] "clara"
## 
## [[2]]
## [1] "yosia"
## 
## [[3]]
## [1] "karen"
## 
## [[4]]
## [1] "naufal"
## 
## [[5]]
## [1] "garry"

point 2

list2=list("clara","yosia","karen","naufal","garry")
print(list2[2])     # pengindeksan list 
## [[1]]
## [1] "yosia"

point 3

list2=list("clara","yosia","karen","naufal","garry")
list2[3]="albert"    # mengganti salah satu isi list dengan item baru
print(list2)
## [[1]]
## [1] "clara"
## 
## [[2]]
## [1] "yosia"
## 
## [[3]]
## [1] "albert"
## 
## [[4]]
## [1] "naufal"
## 
## [[5]]
## [1] "garry"

point 4

list2=list("clara","yosia","karen","naufal","garry")
list2[3]="albert"
length(list2)     # menunjukan jumlah isi list
## [1] 5

2 SOAL

Buatlah contoh menyimpan sekumpulan tuple dengan R, dengan mengikuti instruksi berikut:

  • Buatlah Tuple dengan 5 item didalamnya

  • Perlihatkan cara Mengakses Nilai Tuple

  • Bagaiman anda melakukan Slicing Nilai Tuple

  • Nested Tuple

  • Unpacking Sequence

Jawaban :

point 1 dan point 2

#install.packages("sets")     # install packages untuk library sets
library(sets)                # memanggila library set
tuple0=tuple()
tuple1=tuple("selamat","pagi","guys","happy","weekend")             # membuat tuple dengan 5 item 
print(tuple1)                # Mengakses Nilai Tuple
## ("selamat", "pagi", "guys", "happy", "weekend")

point 3

print(tuple1[1:2])
## ("selamat", "pagi")

point 4

tuple2=rep(tuple1,5)      # mengulang tuple 1 sebanyak 5 kali
print(tuple2)             #  mengakses nilai tuple 1
## ("selamat", "pagi", "guys", "happy", "weekend", "selamat", "pagi",
##  "guys", "happy", "weekend", "selamat", "pagi", "guys", "happy",
##  "weekend", "selamat", "pagi", "guys", "happy", "weekend", "selamat",
##  "pagi", "guys", "happy", "weekend")

point 5

tuple1=tuple("selamat","pagi","guys","happy","weekend")
names(tuple1)=c("index1","index2","index3","index4","index5")
print(tuple1)
## (index1 = "selamat", index2 = "pagi", index3 = "guys", index4 =
##  "happy", index5 = "weekend")

3 SOAL

Buatlah contoh menyimpan sekumpulan Dictionary dengan R, yang memuat type data float, integer, character, dan logical, list, tuple, dictionary dengan mengikuti instruksi berikut:

  • Akses suatu nilai Item dari Dictionary

  • Ubah suatu Nilai Item pada Dictionary

  • Menambahkan Item ke Dictionary

  • Menghapus Item dari Dictionary

Jawaban :

point 1

#install.packages("Dict")
library(Dict)
## 
## Attaching package: 'Dict'
## The following object is masked from 'package:sets':
## 
##     %>%
brgttiara <- dict(
                  "nama"    = "Brigita Tiara EM",
                  "umur"    = as.integer(19),
                  "hobi"    = list("menyanyi", "basket", "tidur"),
                  "menikah" = FALSE,
                  "sosmed"  = tuple(instagram = "brgt_tiaraem",
                                             facebook  = "Brigita Tiara")
)                    # membuat isi dict
cat("Nama saya adalah :", brgttiara$get('nama'))
## Nama saya adalah : Brigita Tiara EM
print(brgttiara$get("sosmed")['instagram'])             # mengakses isi dari dict
## (instagram = "brgt_tiaraem")

point 2

brgttiara["nama"]<-"Brigita Tiara"   # mengubah nilai item dict
print(brgttiara)
## # A tibble: 5 x 2
##   key     value     
##   <chr>   <list>    
## 1 hobi    <list [3]>
## 2 menikah <lgl [1]> 
## 3 nama    <chr [1]> 
## 4 sosmed  <tuple>   
## 5 umur    <int [1]>

point 3

brgttiara$add(umur= 19L)
print(brgttiara)
## # A tibble: 5 x 2
##   key     value     
##   <chr>   <list>    
## 1 hobi    <list [3]>
## 2 menikah <lgl [1]> 
## 3 nama    <chr [1]> 
## 4 sosmed  <tuple>   
## 5 umur    <int [1]>

point 4

brgttiara$remove('umur')    # menghapus sosmed pada dict
print(brgttiara)
## # A tibble: 4 x 2
##   key     value     
##   <chr>   <list>    
## 1 hobi    <list [3]>
## 2 menikah <lgl [1]> 
## 3 nama    <chr [1]> 
## 4 sosmed  <tuple>

4 SOAL

Silahkan untuk menemukan operasi Pengindeksan, Pengirisan, dan Subsetting Data Frame dengan Menggunkan R

Jawaban :

# membentuka data frame
df1_R <- data.frame(nomor =c(1:5),
                    "nama"  =c("tiara","clara","karren","yosia","naufal"),
                    "umur" =c("19","19","20","20","18"),
                    "matkul favorit" =c("aljabar linear","analisis regresi","kalkulus","rancangan percobaan","statistika"),
                    "nilai ips" =c("3,75","3,95","3,86","3,79","3,90")
                    )

df2_R <- data.frame(nomor =c(6:10),
                    "nama"  =c("albert","brigita","della","garry","natalie"),
                    "umur" =c("21","18","19","20","20"),
                    "matkul favorit" =c("ppkn","kepemimpinan","logika matematika","komputasi","ekonomi"),
                    "nilai ips" =c("3.60","3,77","3,87","3,99","3,82")
                    )
df3_R = rbind(df1_R,df2_R) # menggabungkan data frame 1 dan 2

# operasi data frame
print(df3_R)
##    nomor    nama umur      matkul.favorit nilai.ips
## 1      1   tiara   19      aljabar linear      3,75
## 2      2   clara   19    analisis regresi      3,95
## 3      3  karren   20            kalkulus      3,86
## 4      4   yosia   20 rancangan percobaan      3,79
## 5      5  naufal   18          statistika      3,90
## 6      6  albert   21                ppkn      3.60
## 7      7 brigita   18        kepemimpinan      3,77
## 8      8   della   19   logika matematika      3,87
## 9      9   garry   20           komputasi      3,99
## 10    10 natalie   20             ekonomi      3,82
head(df3_R)           # mencetak beberapa baris awal pada data frame
##   nomor   nama umur      matkul.favorit nilai.ips
## 1     1  tiara   19      aljabar linear      3,75
## 2     2  clara   19    analisis regresi      3,95
## 3     3 karren   20            kalkulus      3,86
## 4     4  yosia   20 rancangan percobaan      3,79
## 5     5 naufal   18          statistika      3,90
## 6     6 albert   21                ppkn      3.60
tail(df3_R)           # mencetak beberapa baris akhir pada data frame
##    nomor    nama umur    matkul.favorit nilai.ips
## 5      5  naufal   18        statistika      3,90
## 6      6  albert   21              ppkn      3.60
## 7      7 brigita   18      kepemimpinan      3,77
## 8      8   della   19 logika matematika      3,87
## 9      9   garry   20         komputasi      3,99
## 10    10 natalie   20           ekonomi      3,82
head(df3_R ,4)             # mencetak baris awal hingga baris ke 4 
##   nomor   nama umur      matkul.favorit nilai.ips
## 1     1  tiara   19      aljabar linear      3,75
## 2     2  clara   19    analisis regresi      3,95
## 3     3 karren   20            kalkulus      3,86
## 4     4  yosia   20 rancangan percobaan      3,79
#view(df3_R)               # melihat data frame di Rstudio
str(df3_R)                 # mengecek struktur
## 'data.frame':    10 obs. of  5 variables:
##  $ nomor         : int  1 2 3 4 5 6 7 8 9 10
##  $ nama          : chr  "tiara" "clara" "karren" "yosia" ...
##  $ umur          : chr  "19" "19" "20" "20" ...
##  $ matkul.favorit: chr  "aljabar linear" "analisis regresi" "kalkulus" "rancangan percobaan" ...
##  $ nilai.ips     : chr  "3,75" "3,95" "3,86" "3,79" ...
class(df3_R)               # melihat tipe dari data frame
## [1] "data.frame"
summary(df3_R)             # summary statistik dasar
##      nomor           nama               umur           matkul.favorit    
##  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                                                           
##   nilai.ips        
##  Length:10         
##  Class :character  
##  Mode  :character  
##                    
##                    
## 
dim(df3_R)             # mengecek dimensi
## [1] 10  5
Kode = (1:52)

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

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

univ1 = rep("Negeri",times=32)
univ2 = rep("Swasta",times=10)
univ3 = rep("Luar Negeri", times=10)
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    2000-01-01      Swasta 3.86  654
## 2     2    B        Wanita    2001-01-01      Negeri 3.68  767
## 3     3    C        Wanita    2002-01-01 Luar Negeri 3.98 1026
## 4     4    D          Pria    2003-01-01      Negeri 3.85 1061
## 5     5    E        Wanita    2000-01-01      Negeri 3.99 1161
## 6     6    F        Wanita    2001-01-01      Negeri 3.99  831
## 7     7    G          Pria    2002-01-01      Negeri 3.93  866
## 8     8    H          Pria    2003-01-01      Negeri 3.51  633
## 9     9    I        Wanita    2000-01-01      Negeri 3.95 1085
## 10   10    J          Pria    2001-01-01 Luar Negeri 3.64 1175
## 11   11    K          Pria    2002-01-01      Negeri 3.77  663
## 12   12    L          Pria    2003-01-01      Swasta 3.85  757
## 13   13    M        Wanita    2000-01-01      Negeri 3.68 1060
## 14   14    N          Pria    2001-01-01      Swasta 3.78  607
## 15   15    O          Pria    2002-01-01      Negeri 3.65  792
## 16   16    P          Pria    2003-01-01      Negeri 3.52 1027
## 17   17    Q          Pria    2000-01-01      Swasta 3.94  758
## 18   18    R        Wanita    2001-01-01      Negeri 3.53 1161
## 19   19    S        Wanita    2002-01-01      Negeri 3.98  741
## 20   20    T        Wanita    2003-01-01 Luar Negeri 3.98  801
## 21   21    U        Wanita    2000-01-01      Negeri 3.62  811
## 22   22    V          Pria    2001-01-01      Negeri 3.99 1027
## 23   23    W        Wanita    2002-01-01 Luar Negeri 3.68  893
## 24   24    X        Wanita    2003-01-01      Negeri 3.81  654
## 25   25    Y        Wanita    2000-01-01      Negeri 3.61  763
## 26   26    Z          Pria    2001-01-01      Negeri 3.91 1042
## 27   27    a          Pria    2002-01-01      Negeri 3.98  828
## 28   28    b          Pria    2003-01-01      Swasta 3.72 1102
## 29   29    c        Wanita    2000-01-01      Swasta 3.67  941
## 30   30    d        Wanita    2001-01-01      Swasta 3.64  828
## 31   31    e        Wanita    2002-01-01      Negeri 3.80  606
## 32   32    f        Wanita    2003-01-01      Swasta 3.87  676
## 33   33    g          Pria    2000-01-01      Negeri 3.59  948
## 34   34    h        Wanita    2001-01-01 Luar Negeri 3.82  639
## 35   35    i          Pria    2002-01-01      Negeri 3.81  628
## 36   36    j          Pria    2003-01-01 Luar Negeri 3.89 1154
## 37   37    k        Wanita    2000-01-01 Luar Negeri 3.65  959
## 38   38    l          Pria    2001-01-01      Negeri 3.50  953
## 39   39    m        Wanita    2002-01-01 Luar Negeri 3.53  651
## 40   40    n        Wanita    2003-01-01      Negeri 3.73 1110
## 41   41    o          Pria    2000-01-01      Negeri 3.55  827
## 42   42    p          Pria    2001-01-01      Negeri 3.80  736
## 43   43    q        Wanita    2002-01-01 Luar Negeri 3.58  803
## 44   44    r          Pria    2003-01-01      Swasta 3.69  681
## 45   45    s          Pria    2000-01-01      Negeri 3.66  630
## 46   46    t        Wanita    2001-01-01      Negeri 3.96  901
## 47   47    u        Wanita    2002-01-01      Swasta 3.79 1060
## 48   48    v          Pria    2003-01-01      Negeri 3.59  954
## 49   49    w          Pria    2000-01-01      Negeri 3.92 1164
## 50   50    x          Pria    2001-01-01 Luar Negeri 4.00  662
## 51   51    y        Wanita    2002-01-01      Negeri 3.76  645
## 52   52    z          Pria    2003-01-01      Negeri 3.70  919
typeof(Karyawan_R)
## [1] "list"
Karyawan_R$GPA             # mengekstrak spesifik kolom pada GPA
##  [1] 3.86 3.68 3.98 3.85 3.99 3.99 3.93 3.51 3.95 3.64 3.77 3.85 3.68 3.78 3.65
## [16] 3.52 3.94 3.53 3.98 3.98 3.62 3.99 3.68 3.81 3.61 3.91 3.98 3.72 3.67 3.64
## [31] 3.80 3.87 3.59 3.82 3.81 3.89 3.65 3.50 3.53 3.73 3.55 3.80 3.58 3.69 3.66
## [46] 3.96 3.79 3.59 3.92 4.00 3.76 3.70
Karyawan_R[1:5]             # mengekstrak baris awal sampai kolom ke 5
##    Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas
## 1     1    A        Wanita    2000-01-01      Swasta
## 2     2    B        Wanita    2001-01-01      Negeri
## 3     3    C        Wanita    2002-01-01 Luar Negeri
## 4     4    D          Pria    2003-01-01      Negeri
## 5     5    E        Wanita    2000-01-01      Negeri
## 6     6    F        Wanita    2001-01-01      Negeri
## 7     7    G          Pria    2002-01-01      Negeri
## 8     8    H          Pria    2003-01-01      Negeri
## 9     9    I        Wanita    2000-01-01      Negeri
## 10   10    J          Pria    2001-01-01 Luar Negeri
## 11   11    K          Pria    2002-01-01      Negeri
## 12   12    L          Pria    2003-01-01      Swasta
## 13   13    M        Wanita    2000-01-01      Negeri
## 14   14    N          Pria    2001-01-01      Swasta
## 15   15    O          Pria    2002-01-01      Negeri
## 16   16    P          Pria    2003-01-01      Negeri
## 17   17    Q          Pria    2000-01-01      Swasta
## 18   18    R        Wanita    2001-01-01      Negeri
## 19   19    S        Wanita    2002-01-01      Negeri
## 20   20    T        Wanita    2003-01-01 Luar Negeri
## 21   21    U        Wanita    2000-01-01      Negeri
## 22   22    V          Pria    2001-01-01      Negeri
## 23   23    W        Wanita    2002-01-01 Luar Negeri
## 24   24    X        Wanita    2003-01-01      Negeri
## 25   25    Y        Wanita    2000-01-01      Negeri
## 26   26    Z          Pria    2001-01-01      Negeri
## 27   27    a          Pria    2002-01-01      Negeri
## 28   28    b          Pria    2003-01-01      Swasta
## 29   29    c        Wanita    2000-01-01      Swasta
## 30   30    d        Wanita    2001-01-01      Swasta
## 31   31    e        Wanita    2002-01-01      Negeri
## 32   32    f        Wanita    2003-01-01      Swasta
## 33   33    g          Pria    2000-01-01      Negeri
## 34   34    h        Wanita    2001-01-01 Luar Negeri
## 35   35    i          Pria    2002-01-01      Negeri
## 36   36    j          Pria    2003-01-01 Luar Negeri
## 37   37    k        Wanita    2000-01-01 Luar Negeri
## 38   38    l          Pria    2001-01-01      Negeri
## 39   39    m        Wanita    2002-01-01 Luar Negeri
## 40   40    n        Wanita    2003-01-01      Negeri
## 41   41    o          Pria    2000-01-01      Negeri
## 42   42    p          Pria    2001-01-01      Negeri
## 43   43    q        Wanita    2002-01-01 Luar Negeri
## 44   44    r          Pria    2003-01-01      Swasta
## 45   45    s          Pria    2000-01-01      Negeri
## 46   46    t        Wanita    2001-01-01      Negeri
## 47   47    u        Wanita    2002-01-01      Swasta
## 48   48    v          Pria    2003-01-01      Negeri
## 49   49    w          Pria    2000-01-01      Negeri
## 50   50    x          Pria    2001-01-01 Luar Negeri
## 51   51    y        Wanita    2002-01-01      Negeri
## 52   52    z          Pria    2003-01-01      Negeri
Karyawan_R[c('Nama','GPA')]                  # mengekstrak beberapa elemen pada data frame
##    Nama  GPA
## 1     A 3.86
## 2     B 3.68
## 3     C 3.98
## 4     D 3.85
## 5     E 3.99
## 6     F 3.99
## 7     G 3.93
## 8     H 3.51
## 9     I 3.95
## 10    J 3.64
## 11    K 3.77
## 12    L 3.85
## 13    M 3.68
## 14    N 3.78
## 15    O 3.65
## 16    P 3.52
## 17    Q 3.94
## 18    R 3.53
## 19    S 3.98
## 20    T 3.98
## 21    U 3.62
## 22    V 3.99
## 23    W 3.68
## 24    X 3.81
## 25    Y 3.61
## 26    Z 3.91
## 27    a 3.98
## 28    b 3.72
## 29    c 3.67
## 30    d 3.64
## 31    e 3.80
## 32    f 3.87
## 33    g 3.59
## 34    h 3.82
## 35    i 3.81
## 36    j 3.89
## 37    k 3.65
## 38    l 3.50
## 39    m 3.53
## 40    n 3.73
## 41    o 3.55
## 42    p 3.80
## 43    q 3.58
## 44    r 3.69
## 45    s 3.66
## 46    t 3.96
## 47    u 3.79
## 48    v 3.59
## 49    w 3.92
## 50    x 4.00
## 51    y 3.76
## 52    z 3.70
Karyawan_R[1:5,]                       # mengekstrak 5 baris pertama
##   Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas  GPA Gaji
## 1    1    A        Wanita    2000-01-01      Swasta 3.86  654
## 2    2    B        Wanita    2001-01-01      Negeri 3.68  767
## 3    3    C        Wanita    2002-01-01 Luar Negeri 3.98 1026
## 4    4    D          Pria    2003-01-01      Negeri 3.85 1061
## 5    5    E        Wanita    2000-01-01      Negeri 3.99 1161
Karyawan_R[,1:5]                   # mengekstrak 5 kolom pertama
##    Kode Nama Jenis_Kelamin Tanggal_Lahir Universitas
## 1     1    A        Wanita    2000-01-01      Swasta
## 2     2    B        Wanita    2001-01-01      Negeri
## 3     3    C        Wanita    2002-01-01 Luar Negeri
## 4     4    D          Pria    2003-01-01      Negeri
## 5     5    E        Wanita    2000-01-01      Negeri
## 6     6    F        Wanita    2001-01-01      Negeri
## 7     7    G          Pria    2002-01-01      Negeri
## 8     8    H          Pria    2003-01-01      Negeri
## 9     9    I        Wanita    2000-01-01      Negeri
## 10   10    J          Pria    2001-01-01 Luar Negeri
## 11   11    K          Pria    2002-01-01      Negeri
## 12   12    L          Pria    2003-01-01      Swasta
## 13   13    M        Wanita    2000-01-01      Negeri
## 14   14    N          Pria    2001-01-01      Swasta
## 15   15    O          Pria    2002-01-01      Negeri
## 16   16    P          Pria    2003-01-01      Negeri
## 17   17    Q          Pria    2000-01-01      Swasta
## 18   18    R        Wanita    2001-01-01      Negeri
## 19   19    S        Wanita    2002-01-01      Negeri
## 20   20    T        Wanita    2003-01-01 Luar Negeri
## 21   21    U        Wanita    2000-01-01      Negeri
## 22   22    V          Pria    2001-01-01      Negeri
## 23   23    W        Wanita    2002-01-01 Luar Negeri
## 24   24    X        Wanita    2003-01-01      Negeri
## 25   25    Y        Wanita    2000-01-01      Negeri
## 26   26    Z          Pria    2001-01-01      Negeri
## 27   27    a          Pria    2002-01-01      Negeri
## 28   28    b          Pria    2003-01-01      Swasta
## 29   29    c        Wanita    2000-01-01      Swasta
## 30   30    d        Wanita    2001-01-01      Swasta
## 31   31    e        Wanita    2002-01-01      Negeri
## 32   32    f        Wanita    2003-01-01      Swasta
## 33   33    g          Pria    2000-01-01      Negeri
## 34   34    h        Wanita    2001-01-01 Luar Negeri
## 35   35    i          Pria    2002-01-01      Negeri
## 36   36    j          Pria    2003-01-01 Luar Negeri
## 37   37    k        Wanita    2000-01-01 Luar Negeri
## 38   38    l          Pria    2001-01-01      Negeri
## 39   39    m        Wanita    2002-01-01 Luar Negeri
## 40   40    n        Wanita    2003-01-01      Negeri
## 41   41    o          Pria    2000-01-01      Negeri
## 42   42    p          Pria    2001-01-01      Negeri
## 43   43    q        Wanita    2002-01-01 Luar Negeri
## 44   44    r          Pria    2003-01-01      Swasta
## 45   45    s          Pria    2000-01-01      Negeri
## 46   46    t        Wanita    2001-01-01      Negeri
## 47   47    u        Wanita    2002-01-01      Swasta
## 48   48    v          Pria    2003-01-01      Negeri
## 49   49    w          Pria    2000-01-01      Negeri
## 50   50    x          Pria    2001-01-01 Luar Negeri
## 51   51    y        Wanita    2002-01-01      Negeri
## 52   52    z          Pria    2003-01-01      Negeri
subset(Karyawan_R, select=c(3,4))              # mengekstrak kolom 3 dan kolom 4
##    Jenis_Kelamin Tanggal_Lahir
## 1         Wanita    2000-01-01
## 2         Wanita    2001-01-01
## 3         Wanita    2002-01-01
## 4           Pria    2003-01-01
## 5         Wanita    2000-01-01
## 6         Wanita    2001-01-01
## 7           Pria    2002-01-01
## 8           Pria    2003-01-01
## 9         Wanita    2000-01-01
## 10          Pria    2001-01-01
## 11          Pria    2002-01-01
## 12          Pria    2003-01-01
## 13        Wanita    2000-01-01
## 14          Pria    2001-01-01
## 15          Pria    2002-01-01
## 16          Pria    2003-01-01
## 17          Pria    2000-01-01
## 18        Wanita    2001-01-01
## 19        Wanita    2002-01-01
## 20        Wanita    2003-01-01
## 21        Wanita    2000-01-01
## 22          Pria    2001-01-01
## 23        Wanita    2002-01-01
## 24        Wanita    2003-01-01
## 25        Wanita    2000-01-01
## 26          Pria    2001-01-01
## 27          Pria    2002-01-01
## 28          Pria    2003-01-01
## 29        Wanita    2000-01-01
## 30        Wanita    2001-01-01
## 31        Wanita    2002-01-01
## 32        Wanita    2003-01-01
## 33          Pria    2000-01-01
## 34        Wanita    2001-01-01
## 35          Pria    2002-01-01
## 36          Pria    2003-01-01
## 37        Wanita    2000-01-01
## 38          Pria    2001-01-01
## 39        Wanita    2002-01-01
## 40        Wanita    2003-01-01
## 41          Pria    2000-01-01
## 42          Pria    2001-01-01
## 43        Wanita    2002-01-01
## 44          Pria    2003-01-01
## 45          Pria    2000-01-01
## 46        Wanita    2001-01-01
## 47        Wanita    2002-01-01
## 48          Pria    2003-01-01
## 49          Pria    2000-01-01
## 50          Pria    2001-01-01
## 51        Wanita    2002-01-01
## 52          Pria    2003-01-01
Karyawan_R$Pajak = Karyawan_R$Gaji*0.035
Karyawan_R$Gaji_Bersih = Karyawan_R$Gaji-Karyawan_R$Pajak
Karyawan_R$Gaji_Group1 = Karyawan_R$Gaji >950
Karyawan_R$Gaji_Group2 = ifelse(Karyawan_R$Gaji >950,
                                "Gaji Besar",
                                "Gaji Kecil")
Karyawan_R$Gaji_Group3 = factor(Karyawan_R$GPA >3.50 & 
                                Karyawan_R$Gaji> 950,
                                label = c("level 11","level 12"))

min(Karyawan_R$Gaji)        # nilai minimum pada "Gaji"
## [1] 606
max(Karyawan_R$Gaji)        # nilai miksimum pada "Gaji"
## [1] 1175
mean(Karyawan_R$Gaji)       # nilai rata-rata pada "Gaji"
## [1] 861.9423
var(Karyawan_R$Gaji)        # nilai variansi pada "Gaji"
## [1] 32473.66
sd(Karyawan_R$Gaji)        # nilai standar deviasi pada "Gaji"  
## [1] 180.2045
summary(Karyawan_R$Gaji)        # nilai statistik dasar data frame pada "Gaji"
##    Min. 1st Qu.  Median    Mean 3rd Qu.    Max. 
##   606.0   679.8   828.0   861.9  1027.0  1175.0

5 SOAL

Buatlah operasi Ganti Nama Variabel pada suatu Data Frame dengan menggunakan R

Jawaban :

rename_1= Karyawan_R
names(rename_1)= c("kode",
                  "nama panggilan",
                  "jenis kelamin",
                  "tanggal lahir",
                  "univ",
                  "ipk",
                  "gaji",
                  "pajak",
                  "gaji bersih",
                  "gaji group 1",
                  "gaji group 2")
rename_1
##    kode nama panggilan jenis kelamin tanggal lahir        univ  ipk gaji  pajak
## 1     1              A        Wanita    2000-01-01      Swasta 3.86  654 22.890
## 2     2              B        Wanita    2001-01-01      Negeri 3.68  767 26.845
## 3     3              C        Wanita    2002-01-01 Luar Negeri 3.98 1026 35.910
## 4     4              D          Pria    2003-01-01      Negeri 3.85 1061 37.135
## 5     5              E        Wanita    2000-01-01      Negeri 3.99 1161 40.635
## 6     6              F        Wanita    2001-01-01      Negeri 3.99  831 29.085
## 7     7              G          Pria    2002-01-01      Negeri 3.93  866 30.310
## 8     8              H          Pria    2003-01-01      Negeri 3.51  633 22.155
## 9     9              I        Wanita    2000-01-01      Negeri 3.95 1085 37.975
## 10   10              J          Pria    2001-01-01 Luar Negeri 3.64 1175 41.125
## 11   11              K          Pria    2002-01-01      Negeri 3.77  663 23.205
## 12   12              L          Pria    2003-01-01      Swasta 3.85  757 26.495
## 13   13              M        Wanita    2000-01-01      Negeri 3.68 1060 37.100
## 14   14              N          Pria    2001-01-01      Swasta 3.78  607 21.245
## 15   15              O          Pria    2002-01-01      Negeri 3.65  792 27.720
## 16   16              P          Pria    2003-01-01      Negeri 3.52 1027 35.945
## 17   17              Q          Pria    2000-01-01      Swasta 3.94  758 26.530
## 18   18              R        Wanita    2001-01-01      Negeri 3.53 1161 40.635
## 19   19              S        Wanita    2002-01-01      Negeri 3.98  741 25.935
## 20   20              T        Wanita    2003-01-01 Luar Negeri 3.98  801 28.035
## 21   21              U        Wanita    2000-01-01      Negeri 3.62  811 28.385
## 22   22              V          Pria    2001-01-01      Negeri 3.99 1027 35.945
## 23   23              W        Wanita    2002-01-01 Luar Negeri 3.68  893 31.255
## 24   24              X        Wanita    2003-01-01      Negeri 3.81  654 22.890
## 25   25              Y        Wanita    2000-01-01      Negeri 3.61  763 26.705
## 26   26              Z          Pria    2001-01-01      Negeri 3.91 1042 36.470
## 27   27              a          Pria    2002-01-01      Negeri 3.98  828 28.980
## 28   28              b          Pria    2003-01-01      Swasta 3.72 1102 38.570
## 29   29              c        Wanita    2000-01-01      Swasta 3.67  941 32.935
## 30   30              d        Wanita    2001-01-01      Swasta 3.64  828 28.980
## 31   31              e        Wanita    2002-01-01      Negeri 3.80  606 21.210
## 32   32              f        Wanita    2003-01-01      Swasta 3.87  676 23.660
## 33   33              g          Pria    2000-01-01      Negeri 3.59  948 33.180
## 34   34              h        Wanita    2001-01-01 Luar Negeri 3.82  639 22.365
## 35   35              i          Pria    2002-01-01      Negeri 3.81  628 21.980
## 36   36              j          Pria    2003-01-01 Luar Negeri 3.89 1154 40.390
## 37   37              k        Wanita    2000-01-01 Luar Negeri 3.65  959 33.565
## 38   38              l          Pria    2001-01-01      Negeri 3.50  953 33.355
## 39   39              m        Wanita    2002-01-01 Luar Negeri 3.53  651 22.785
## 40   40              n        Wanita    2003-01-01      Negeri 3.73 1110 38.850
## 41   41              o          Pria    2000-01-01      Negeri 3.55  827 28.945
## 42   42              p          Pria    2001-01-01      Negeri 3.80  736 25.760
## 43   43              q        Wanita    2002-01-01 Luar Negeri 3.58  803 28.105
## 44   44              r          Pria    2003-01-01      Swasta 3.69  681 23.835
## 45   45              s          Pria    2000-01-01      Negeri 3.66  630 22.050
## 46   46              t        Wanita    2001-01-01      Negeri 3.96  901 31.535
## 47   47              u        Wanita    2002-01-01      Swasta 3.79 1060 37.100
## 48   48              v          Pria    2003-01-01      Negeri 3.59  954 33.390
## 49   49              w          Pria    2000-01-01      Negeri 3.92 1164 40.740
## 50   50              x          Pria    2001-01-01 Luar Negeri 4.00  662 23.170
## 51   51              y        Wanita    2002-01-01      Negeri 3.76  645 22.575
## 52   52              z          Pria    2003-01-01      Negeri 3.70  919 32.165
##    gaji bersih gaji group 1 gaji group 2       NA
## 1      631.110        FALSE   Gaji Kecil level 11
## 2      740.155        FALSE   Gaji Kecil level 11
## 3      990.090         TRUE   Gaji Besar level 12
## 4     1023.865         TRUE   Gaji Besar level 12
## 5     1120.365         TRUE   Gaji Besar level 12
## 6      801.915        FALSE   Gaji Kecil level 11
## 7      835.690        FALSE   Gaji Kecil level 11
## 8      610.845        FALSE   Gaji Kecil level 11
## 9     1047.025         TRUE   Gaji Besar level 12
## 10    1133.875         TRUE   Gaji Besar level 12
## 11     639.795        FALSE   Gaji Kecil level 11
## 12     730.505        FALSE   Gaji Kecil level 11
## 13    1022.900         TRUE   Gaji Besar level 12
## 14     585.755        FALSE   Gaji Kecil level 11
## 15     764.280        FALSE   Gaji Kecil level 11
## 16     991.055         TRUE   Gaji Besar level 12
## 17     731.470        FALSE   Gaji Kecil level 11
## 18    1120.365         TRUE   Gaji Besar level 12
## 19     715.065        FALSE   Gaji Kecil level 11
## 20     772.965        FALSE   Gaji Kecil level 11
## 21     782.615        FALSE   Gaji Kecil level 11
## 22     991.055         TRUE   Gaji Besar level 12
## 23     861.745        FALSE   Gaji Kecil level 11
## 24     631.110        FALSE   Gaji Kecil level 11
## 25     736.295        FALSE   Gaji Kecil level 11
## 26    1005.530         TRUE   Gaji Besar level 12
## 27     799.020        FALSE   Gaji Kecil level 11
## 28    1063.430         TRUE   Gaji Besar level 12
## 29     908.065        FALSE   Gaji Kecil level 11
## 30     799.020        FALSE   Gaji Kecil level 11
## 31     584.790        FALSE   Gaji Kecil level 11
## 32     652.340        FALSE   Gaji Kecil level 11
## 33     914.820        FALSE   Gaji Kecil level 11
## 34     616.635        FALSE   Gaji Kecil level 11
## 35     606.020        FALSE   Gaji Kecil level 11
## 36    1113.610         TRUE   Gaji Besar level 12
## 37     925.435         TRUE   Gaji Besar level 12
## 38     919.645         TRUE   Gaji Besar level 11
## 39     628.215        FALSE   Gaji Kecil level 11
## 40    1071.150         TRUE   Gaji Besar level 12
## 41     798.055        FALSE   Gaji Kecil level 11
## 42     710.240        FALSE   Gaji Kecil level 11
## 43     774.895        FALSE   Gaji Kecil level 11
## 44     657.165        FALSE   Gaji Kecil level 11
## 45     607.950        FALSE   Gaji Kecil level 11
## 46     869.465        FALSE   Gaji Kecil level 11
## 47    1022.900         TRUE   Gaji Besar level 12
## 48     920.610         TRUE   Gaji Besar level 12
## 49    1123.260         TRUE   Gaji Besar level 12
## 50     638.830        FALSE   Gaji Kecil level 11
## 51     622.425        FALSE   Gaji Kecil level 11
## 52     886.835        FALSE   Gaji Kecil level 11
LS0tDQp0aXRsZTogIkFMT0dBUklUTUEgREFOIFNUUlVLVFVSIERBVEEiDQpzdWJ0aXRsZTogIlRVR0FTIDIiDQphdXRob3I6ICJCcmlnaXRhIFRpYXJhIEVsZ2l0eWFuYSBNZWxhbnRpa2EgKDIwMjA0OTIwMDAxKSINCmRhdGU6ICJgciBmb3JtYXQoU3lzLkRhdGUoKSwgJyVCICVkLCAlWScpYCINCm91dHB1dDogDQogIGh0bWxfZG9jdW1lbnQ6IA0KICAgIGh0bWxfZG9jdW1lbnQ6IG51bGwNCiAgICBjb2RlX2ZvbGRpbmc6IGhpZGUNCiAgICB0b2M6IHllcw0KICAgIHRvY19mbG9hdDoNCiAgICAgIGNvbGxhcHNlZDogeWVzDQogICAgbnVtYmVyX3NlY3Rpb25zOiB5ZXMNCiAgICBjb2RlX2Rvd25sb2FkOiB5ZXMNCiAgICB0aGVtZTogc2FuZHN0b25lDQogICAgY3NzOiBzdHlsZTEuY3NzDQogICAgaGlnaGxpZ2h0OiBtb25vY2hyb21lDQotLS0NCg0KDQo8aW1nIHN0eWxlPSJmbG9hdDogcmlnaHQ7IG1hcmdpbjogMHB4IDEwMHB4IDBweCAwcHg7IHdpZHRoOjI1JSIgc3JjPSJmb3RvcHJpYmFkaS5qcGciLz4gDQoNCmBgYHtyIGxvZ28sIGVjaG89RkFMU0UsZmlnLmFsaWduPSdjZW50ZXInLCBvdXQud2lkdGggPSAnMzAlJ30NCmtuaXRyOjppbmNsdWRlX2dyYXBoaWNzKCJsb2dvLnBuZyIpDQpgYGANCg0KRW1haWwgJm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7Jm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7OiAgYnJpZ2l0YS5tZWxhbnRpa2FAc3R1ZGVudC5tYXRhbmF1bml2ZXJzaXR5LmFjLmlkIDxicj4NClJQdWJzICAmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs6IGh0dHBzOi8vcnB1YnMuY29tL2JyaWdpdGF0aWFyYWVtLyA8YnI+DQpKdXJ1c2FuICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDs6IFtTdGF0aXN0aWthXShodHRwczovL21hdGFuYXVuaXZlcnNpdHkuYWMuaWQvP2x5PWFjYWRlbWljJmM9c2IpIDxicj4NCkFkZHJlc3MgICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyA6IEFSQSBDZW50ZXIsIE1hdGFuYSBVbml2ZXJzaXR5IFRvd2VyIDxicj4NCiZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7ICZuYnNwOyAmbmJzcDsgJm5ic3A7Jm5ic3A7IEpsLiBDQkQgQmFyYXQgS2F2LCBSVC4xLCBDdXJ1ZyBTYW5nZXJlbmcsIEtlbGFwYSBEdWEsIFRhbmdlcmFuZywgQmFudGVuIDE1ODEwLg0KDQoqKioqDQoNCiMgU09BTA0KTWVtYnVhdCBQcm9ncmFtIGRlbmdhbiBMaXN0IFINCg0KKiBCdWF0IHNlYnVhaCBsaXN0IHVudHVrIG1lbnlpbXBhbiA1IG9yYW5nIHRlbWFuIGRla2F0bXUNCg0KKiBQaWxpaGxhaCBzYXR1IG9yYW5nIGRhcmkgbGlzdCB0ZXJzZWJ1dCB5YW5nIG1lbmphZGkgdGVtYW4gcGFsaW5nIGRla2F0bXUgIGRlbmdhbiBtZW5nZ3VuYWthbiBpbmRleA0KDQoqIEdhbnRpbGFoIHNhdHUgb3JhbmcgeWFuZyB0aWRhayBiZWdpdHUgZGVrYXQgZGVuZ2FubXUgZGVuZ2FuIHRlbWFuIGJhcnUgeWFuZyBrYW11IHRlbXVpIGJhcnUtYmFydSBpbmkNCg0KKiBCYWdhaW1hbmEgY2FyYW55YSBhbmRhIG1lbmdoaXR1bmcgYmFueWFrIHRlbWFuIHlhbmcgYWRhIGRhbGFtIGxpc3QgdGVyc2VidXQNCg0KKmphYXdhYmFuIDoqDQoNCnBvaW50IDENCmBgYHtyfQ0KbGlzdDA9bGlzdCgpDQpsaXN0MT1saXN0KCJjbGFyYSIsInlvc2lhIiwia2FyZW4iLCJuYXVmYWwiLCJnYXJyeSIpICAgICAgICAjIG1lbWJ1YXQgbGlzdCBkZW5nYW4gNSBuYW1hIHRlbWFuDQpwcmludChjKGxpc3QwLGxpc3QxKSkgICAjIHByaW50IGxpc3QgMSB5YW5nIHRlbGFoIGRpYnVhdA0KYGBgDQpwb2ludCAyDQpgYGB7cn0NCmxpc3QyPWxpc3QoImNsYXJhIiwieW9zaWEiLCJrYXJlbiIsIm5hdWZhbCIsImdhcnJ5IikNCnByaW50KGxpc3QyWzJdKSAgICAgIyBwZW5naW5kZWtzYW4gbGlzdCANCmBgYA0KDQpwb2ludCAzDQpgYGB7cn0NCmxpc3QyPWxpc3QoImNsYXJhIiwieW9zaWEiLCJrYXJlbiIsIm5hdWZhbCIsImdhcnJ5IikNCmxpc3QyWzNdPSJhbGJlcnQiICAgICMgbWVuZ2dhbnRpIHNhbGFoIHNhdHUgaXNpIGxpc3QgZGVuZ2FuIGl0ZW0gYmFydQ0KcHJpbnQobGlzdDIpDQpgYGANCnBvaW50IDQNCmBgYHtyfQ0KbGlzdDI9bGlzdCgiY2xhcmEiLCJ5b3NpYSIsImthcmVuIiwibmF1ZmFsIiwiZ2FycnkiKQ0KbGlzdDJbM109ImFsYmVydCINCmxlbmd0aChsaXN0MikgICAgICMgbWVudW5qdWthbiBqdW1sYWggaXNpIGxpc3QNCmBgYA0KDQojIFNPQUwNCg0KIEJ1YXRsYWggY29udG9oIG1lbnlpbXBhbiBzZWt1bXB1bGFuIHR1cGxlIGRlbmdhbiBSLCBkZW5nYW4gbWVuZ2lrdXRpIGluc3RydWtzaSBiZXJpa3V0Og0KDQoqIEJ1YXRsYWggVHVwbGUgZGVuZ2FuIDUgaXRlbSBkaWRhbGFtbnlhDQoNCiogUGVybGloYXRrYW4gY2FyYSBNZW5nYWtzZXMgTmlsYWkgVHVwbGUNCg0KKiBCYWdhaW1hbiBhbmRhIG1lbGFrdWthbiBTbGljaW5nIE5pbGFpIFR1cGxlDQoNCiogTmVzdGVkIFR1cGxlDQoNCiogVW5wYWNraW5nIFNlcXVlbmNlDQoNCipKYXdhYmFuIDoqDQoNCnBvaW50IDEgZGFuIHBvaW50IDINCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoInNldHMiKSAgICAgIyBpbnN0YWxsIHBhY2thZ2VzIHVudHVrIGxpYnJhcnkgc2V0cw0KbGlicmFyeShzZXRzKSAgICAgICAgICAgICAgICAjIG1lbWFuZ2dpbGEgbGlicmFyeSBzZXQNCnR1cGxlMD10dXBsZSgpDQp0dXBsZTE9dHVwbGUoInNlbGFtYXQiLCJwYWdpIiwiZ3V5cyIsImhhcHB5Iiwid2Vla2VuZCIpICAgICAgICAgICAgICMgbWVtYnVhdCB0dXBsZSBkZW5nYW4gNSBpdGVtIA0KcHJpbnQodHVwbGUxKSAgICAgICAgICAgICAgICAjIE1lbmdha3NlcyBOaWxhaSBUdXBsZQ0KYGBgDQoNCnBvaW50IDMNCmBgYHtyfQ0KcHJpbnQodHVwbGUxWzE6Ml0pDQpgYGANCg0KcG9pbnQgNA0KYGBge3J9DQp0dXBsZTI9cmVwKHR1cGxlMSw1KSAgICAgICMgbWVuZ3VsYW5nIHR1cGxlIDEgc2ViYW55YWsgNSBrYWxpDQpwcmludCh0dXBsZTIpICAgICAgICAgICAgICMgIG1lbmdha3NlcyBuaWxhaSB0dXBsZSAxDQpgYGANCg0KcG9pbnQgNQ0KYGBge3J9DQp0dXBsZTE9dHVwbGUoInNlbGFtYXQiLCJwYWdpIiwiZ3V5cyIsImhhcHB5Iiwid2Vla2VuZCIpDQpuYW1lcyh0dXBsZTEpPWMoImluZGV4MSIsImluZGV4MiIsImluZGV4MyIsImluZGV4NCIsImluZGV4NSIpDQpwcmludCh0dXBsZTEpDQpgYGANCg0KDQojIFNPQUwNCkJ1YXRsYWggY29udG9oIG1lbnlpbXBhbiBzZWt1bXB1bGFuIERpY3Rpb25hcnkgZGVuZ2FuIFIsIHlhbmcgbWVtdWF0IHR5cGUgZGF0YSBmbG9hdCwgaW50ZWdlciwgY2hhcmFjdGVyLCBkYW4gbG9naWNhbCwgbGlzdCwgdHVwbGUsIGRpY3Rpb25hcnkgZGVuZ2FuIG1lbmdpa3V0aSBpbnN0cnVrc2kgYmVyaWt1dDoNCg0KKiBBa3NlcyBzdWF0dSBuaWxhaSBJdGVtIGRhcmkgRGljdGlvbmFyeSANCg0KKiBVYmFoIHN1YXR1IE5pbGFpIEl0ZW0gcGFkYSBEaWN0aW9uYXJ5DQoNCiogTWVuYW1iYWhrYW4gSXRlbSBrZSBEaWN0aW9uYXJ5DQoNCiogTWVuZ2hhcHVzIEl0ZW0gZGFyaSBEaWN0aW9uYXJ5DQoNCipKYXdhYmFuIDoqDQoNCnBvaW50IDENCmBgYHtyfQ0KI2luc3RhbGwucGFja2FnZXMoIkRpY3QiKQ0KbGlicmFyeShEaWN0KQ0KYnJndHRpYXJhIDwtIGRpY3QoDQogICAgICAgICAgICAgICAgICAibmFtYSIgICAgPSAiQnJpZ2l0YSBUaWFyYSBFTSIsDQogICAgICAgICAgICAgICAgICAidW11ciIgICAgPSBhcy5pbnRlZ2VyKDE5KSwNCiAgICAgICAgICAgICAgICAgICJob2JpIiAgICA9IGxpc3QoIm1lbnlhbnlpIiwgImJhc2tldCIsICJ0aWR1ciIpLA0KICAgICAgICAgICAgICAgICAgIm1lbmlrYWgiID0gRkFMU0UsDQogICAgICAgICAgICAgICAgICAic29zbWVkIiAgPSB0dXBsZShpbnN0YWdyYW0gPSAiYnJndF90aWFyYWVtIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIGZhY2Vib29rICA9ICJCcmlnaXRhIFRpYXJhIikNCikgICAgICAgICAgICAgICAgICAgICMgbWVtYnVhdCBpc2kgZGljdA0KY2F0KCJOYW1hIHNheWEgYWRhbGFoIDoiLCBicmd0dGlhcmEkZ2V0KCduYW1hJykpDQpwcmludChicmd0dGlhcmEkZ2V0KCJzb3NtZWQiKVsnaW5zdGFncmFtJ10pICAgICAgICAgICAgICMgbWVuZ2Frc2VzIGlzaSBkYXJpIGRpY3QNCmBgYA0KDQpwb2ludCAyDQpgYGB7cn0NCmJyZ3R0aWFyYVsibmFtYSJdPC0iQnJpZ2l0YSBUaWFyYSIgICAjIG1lbmd1YmFoIG5pbGFpIGl0ZW0gZGljdA0KcHJpbnQoYnJndHRpYXJhKQ0KYGBgDQoNCnBvaW50IDMNCmBgYHtyfQ0KYnJndHRpYXJhJGFkZCh1bXVyPSAxOUwpDQpwcmludChicmd0dGlhcmEpDQpgYGANCg0KDQpwb2ludCA0DQpgYGB7cn0NCmJyZ3R0aWFyYSRyZW1vdmUoJ3VtdXInKSAgICAjIG1lbmdoYXB1cyBzb3NtZWQgcGFkYSBkaWN0DQpwcmludChicmd0dGlhcmEpDQpgYGANCg0KIyBTT0FMDQpTaWxhaGthbiB1bnR1ayBtZW5lbXVrYW4gb3BlcmFzaSBQZW5naW5kZWtzYW4sIFBlbmdpcmlzYW4sIGRhbiBTdWJzZXR0aW5nIERhdGEgRnJhbWUgZGVuZ2FuIE1lbmdndW5rYW4gUg0KDQoqSmF3YWJhbiA6Kg0KYGBge3J9DQojIG1lbWJlbnR1a2EgZGF0YSBmcmFtZQ0KZGYxX1IgPC0gZGF0YS5mcmFtZShub21vciA9YygxOjUpLA0KICAgICAgICAgICAgICAgICAgICAibmFtYSIgID1jKCJ0aWFyYSIsImNsYXJhIiwia2FycmVuIiwieW9zaWEiLCJuYXVmYWwiKSwNCiAgICAgICAgICAgICAgICAgICAgInVtdXIiID1jKCIxOSIsIjE5IiwiMjAiLCIyMCIsIjE4IiksDQogICAgICAgICAgICAgICAgICAgICJtYXRrdWwgZmF2b3JpdCIgPWMoImFsamFiYXIgbGluZWFyIiwiYW5hbGlzaXMgcmVncmVzaSIsImthbGt1bHVzIiwicmFuY2FuZ2FuIHBlcmNvYmFhbiIsInN0YXRpc3Rpa2EiKSwNCiAgICAgICAgICAgICAgICAgICAgIm5pbGFpIGlwcyIgPWMoIjMsNzUiLCIzLDk1IiwiMyw4NiIsIjMsNzkiLCIzLDkwIikNCiAgICAgICAgICAgICAgICAgICAgKQ0KDQpkZjJfUiA8LSBkYXRhLmZyYW1lKG5vbW9yID1jKDY6MTApLA0KICAgICAgICAgICAgICAgICAgICAibmFtYSIgID1jKCJhbGJlcnQiLCJicmlnaXRhIiwiZGVsbGEiLCJnYXJyeSIsIm5hdGFsaWUiKSwNCiAgICAgICAgICAgICAgICAgICAgInVtdXIiID1jKCIyMSIsIjE4IiwiMTkiLCIyMCIsIjIwIiksDQogICAgICAgICAgICAgICAgICAgICJtYXRrdWwgZmF2b3JpdCIgPWMoInBwa24iLCJrZXBlbWltcGluYW4iLCJsb2dpa2EgbWF0ZW1hdGlrYSIsImtvbXB1dGFzaSIsImVrb25vbWkiKSwNCiAgICAgICAgICAgICAgICAgICAgIm5pbGFpIGlwcyIgPWMoIjMuNjAiLCIzLDc3IiwiMyw4NyIsIjMsOTkiLCIzLDgyIikNCiAgICAgICAgICAgICAgICAgICAgKQ0KZGYzX1IgPSByYmluZChkZjFfUixkZjJfUikgIyBtZW5nZ2FidW5na2FuIGRhdGEgZnJhbWUgMSBkYW4gMg0KDQojIG9wZXJhc2kgZGF0YSBmcmFtZQ0KcHJpbnQoZGYzX1IpDQoNCmBgYA0KDQpgYGB7cn0NCmhlYWQoZGYzX1IpICAgICAgICAgICAjIG1lbmNldGFrIGJlYmVyYXBhIGJhcmlzIGF3YWwgcGFkYSBkYXRhIGZyYW1lDQpgYGANCg0KYGBge3J9DQp0YWlsKGRmM19SKSAgICAgICAgICAgIyBtZW5jZXRhayBiZWJlcmFwYSBiYXJpcyBha2hpciBwYWRhIGRhdGEgZnJhbWUNCmBgYA0KDQpgYGB7cn0NCmhlYWQoZGYzX1IgLDQpICAgICAgICAgICAgICMgbWVuY2V0YWsgYmFyaXMgYXdhbCBoaW5nZ2EgYmFyaXMga2UgNCANCmBgYA0KDQpgYGB7cn0NCiN2aWV3KGRmM19SKSAgICAgICAgICAgICAgICMgbWVsaWhhdCBkYXRhIGZyYW1lIGRpIFJzdHVkaW8NCmBgYA0KDQpgYGB7cn0NCnN0cihkZjNfUikgICAgICAgICAgICAgICAgICMgbWVuZ2VjZWsgc3RydWt0dXINCmBgYA0KDQpgYGB7cn0NCmNsYXNzKGRmM19SKSAgICAgICAgICAgICAgICMgbWVsaWhhdCB0aXBlIGRhcmkgZGF0YSBmcmFtZQ0KYGBgDQoNCmBgYHtyfQ0Kc3VtbWFyeShkZjNfUikgICAgICAgICAgICAgIyBzdW1tYXJ5IHN0YXRpc3RpayBkYXNhcg0KYGBgDQoNCmBgYHtyfQ0KZGltKGRmM19SKSAgICAgICAgICAgICAjIG1lbmdlY2VrIGRpbWVuc2kNCmBgYA0KDQpgYGB7cn0NCktvZGUgPSAoMTo1MikNCg0KTmFtYSA9IGMoTEVUVEVSUyxsZXR0ZXJzKQ0KSmVuaXNfS2VsYW1pbiA9IHNhbXBsZShyZXAoYygiUHJpYSIsIldhbml0YSIpLHRpbWVzPTI2KSkNCg0KdGFodW4gPSBzZXEoYXMuRGF0ZSgiMjAwMC8wMS8wMSIpLCBieT0ieWVhciIsIGxlbmd0aC5vdXQ9NCkNClRhbmdnYWxfTGFoaXIgPSByZXAodGFodW4sdGltZXM9MTMpDQoNCnVuaXYxID0gcmVwKCJOZWdlcmkiLHRpbWVzPTMyKQ0KdW5pdjIgPSByZXAoIlN3YXN0YSIsdGltZXM9MTApDQp1bml2MyA9IHJlcCgiTHVhciBOZWdlcmkiLCB0aW1lcz0xMCkNClVuaXZlcnNpdGFzID0gc2FtcGxlKGModW5pdjMsdW5pdjEsdW5pdjIpKQ0KDQpncGEgPC0gcnVuaWYoNTIsIG1pbj0zLjUwLCBtYXg9NC4wMCkNCkdQQSA8LSByb3VuZChncGEsIGRpZ2l0cz0yKQ0KDQpHYWppPC0gc2FtcGxlKDYwMDoxMjAwLDUyLHJlcGxhY2U9VCkNCg0KS2FyeWF3YW5fUiA9IGRhdGEuZnJhbWUoS29kZSwNCiAgICAgICAgICAgICAgICAgICAgICAgIE5hbWEsDQogICAgICAgICAgICAgICAgICAgICAgICBKZW5pc19LZWxhbWluLA0KICAgICAgICAgICAgICAgICAgICAgICAgVGFuZ2dhbF9MYWhpciwNCiAgICAgICAgICAgICAgICAgICAgICAgIFVuaXZlcnNpdGFzLA0KICAgICAgICAgICAgICAgICAgICAgICAgR1BBLA0KICAgICAgICAgICAgICAgICAgICAgICAgR2FqaSkNCg0KcHJpbnQoS2FyeWF3YW5fUikNCmBgYA0KDQoNCmBgYHtyfQ0KdHlwZW9mKEthcnlhd2FuX1IpDQpgYGANCg0KYGBge3J9DQpLYXJ5YXdhbl9SJEdQQSAgICAgICAgICAgICAjIG1lbmdla3N0cmFrIHNwZXNpZmlrIGtvbG9tIHBhZGEgR1BBDQpgYGANCg0KYGBge3J9DQpLYXJ5YXdhbl9SWzE6NV0gICAgICAgICAgICAgIyBtZW5nZWtzdHJhayBiYXJpcyBhd2FsIHNhbXBhaSBrb2xvbSBrZSA1DQpgYGANCg0KYGBge3J9DQpLYXJ5YXdhbl9SW2MoJ05hbWEnLCdHUEEnKV0gICAgICAgICAgICAgICAgICAjIG1lbmdla3N0cmFrIGJlYmVyYXBhIGVsZW1lbiBwYWRhIGRhdGEgZnJhbWUNCmBgYA0KDQpgYGB7cn0NCkthcnlhd2FuX1JbMTo1LF0gICAgICAgICAgICAgICAgICAgICAgICMgbWVuZ2Vrc3RyYWsgNSBiYXJpcyBwZXJ0YW1hDQpgYGANCg0KYGBge3J9DQpLYXJ5YXdhbl9SWywxOjVdICAgICAgICAgICAgICAgICAgICMgbWVuZ2Vrc3RyYWsgNSBrb2xvbSBwZXJ0YW1hDQpgYGANCg0KYGBge3J9DQpzdWJzZXQoS2FyeWF3YW5fUiwgc2VsZWN0PWMoMyw0KSkgICAgICAgICAgICAgICMgbWVuZ2Vrc3RyYWsga29sb20gMyBkYW4ga29sb20gNA0KYGBgDQoNCmBgYHtyfQ0KS2FyeWF3YW5fUiRQYWphayA9IEthcnlhd2FuX1IkR2FqaSowLjAzNQ0KS2FyeWF3YW5fUiRHYWppX0JlcnNpaCA9IEthcnlhd2FuX1IkR2FqaS1LYXJ5YXdhbl9SJFBhamFrDQpLYXJ5YXdhbl9SJEdhamlfR3JvdXAxID0gS2FyeWF3YW5fUiRHYWppID45NTANCkthcnlhd2FuX1IkR2FqaV9Hcm91cDIgPSBpZmVsc2UoS2FyeWF3YW5fUiRHYWppID45NTAsDQogICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICJHYWppIEJlc2FyIiwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgIkdhamkgS2VjaWwiKQ0KS2FyeWF3YW5fUiRHYWppX0dyb3VwMyA9IGZhY3RvcihLYXJ5YXdhbl9SJEdQQSA+My41MCAmIA0KICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICBLYXJ5YXdhbl9SJEdhamk+IDk1MCwNCiAgICAgICAgICAgICAgICAgICAgICAgICAgICAgICAgbGFiZWwgPSBjKCJsZXZlbCAxMSIsImxldmVsIDEyIikpDQoNCm1pbihLYXJ5YXdhbl9SJEdhamkpICAgICAgICAjIG5pbGFpIG1pbmltdW0gcGFkYSAiR2FqaSINCm1heChLYXJ5YXdhbl9SJEdhamkpICAgICAgICAjIG5pbGFpIG1pa3NpbXVtIHBhZGEgIkdhamkiDQptZWFuKEthcnlhd2FuX1IkR2FqaSkgICAgICAgIyBuaWxhaSByYXRhLXJhdGEgcGFkYSAiR2FqaSINCnZhcihLYXJ5YXdhbl9SJEdhamkpICAgICAgICAjIG5pbGFpIHZhcmlhbnNpIHBhZGEgIkdhamkiDQpzZChLYXJ5YXdhbl9SJEdhamkpICAgICAgICAjIG5pbGFpIHN0YW5kYXIgZGV2aWFzaSBwYWRhICJHYWppIiAgDQpzdW1tYXJ5KEthcnlhd2FuX1IkR2FqaSkgICAgICAgICMgbmlsYWkgc3RhdGlzdGlrIGRhc2FyIGRhdGEgZnJhbWUgcGFkYSAiR2FqaSINCmBgYA0KDQojIFNPQUwgDQoNCkJ1YXRsYWggb3BlcmFzaSBHYW50aSBOYW1hIFZhcmlhYmVsIHBhZGEgc3VhdHUgRGF0YSBGcmFtZSBkZW5nYW4gbWVuZ2d1bmFrYW4gUiANCg0KKkphd2FiYW4gOioNCg0KYGBge3J9DQpyZW5hbWVfMT0gS2FyeWF3YW5fUg0KbmFtZXMocmVuYW1lXzEpPSBjKCJrb2RlIiwNCiAgICAgICAgICAgICAgICAgICJuYW1hIHBhbmdnaWxhbiIsDQogICAgICAgICAgICAgICAgICAiamVuaXMga2VsYW1pbiIsDQogICAgICAgICAgICAgICAgICAidGFuZ2dhbCBsYWhpciIsDQogICAgICAgICAgICAgICAgICAidW5pdiIsDQogICAgICAgICAgICAgICAgICAiaXBrIiwNCiAgICAgICAgICAgICAgICAgICJnYWppIiwNCiAgICAgICAgICAgICAgICAgICJwYWphayIsDQogICAgICAgICAgICAgICAgICAiZ2FqaSBiZXJzaWgiLA0KICAgICAgICAgICAgICAgICAgImdhamkgZ3JvdXAgMSIsDQogICAgICAgICAgICAgICAgICAiZ2FqaSBncm91cCAyIikNCnJlbmFtZV8xDQpgYGANCg0K