Day 1

Exploratory Data

Import data loan_kiva pada folder data_input kemudian berikan nama object sebagai kiva:

kiva = read.csv("data_input/loan_kiva.csv")

Berikut ini adalah deskripsi dari variabel data kiva:

  • id: Unique ID for loan (Loan ID)
  • funded_amount: The amount disbursed by Kiva to the field agent(USD)
  • loan_amount: The amount disbursed by the field agent to the borrower(USD)
  • activity: More granular category
  • sector: High level category
  • country: Full country name of country in which loan was disbursed
  • region: Full region name within the country
  • currency: The currency in which the loan was disbursed
  • partner_id: ID of partner organization
  • posted_time: The time at which the loan is posted on Kiva by the field agent
  • funded_time: The time at which the loan posted to Kiva gets funded by lenders completely
  • term_in_months: The duration for which the loan was disbursed in months
  • lender_count: The total number of lenders that contributed to this loan
  • repayment_interval: Interval for the repayment of the loan

inspect 6 data pertama

head(kiva)

Missing value

Cek kelengkapan data, apakah terdapat missing value?

anyNA(kiva)
## [1] FALSE

Hasil False maka tidak terdapat missing value pada kiva.csv. Untuk melihat apakah setiap kolom terdapat missing value, digunakan colSums(is.na(nama_object)).

colSums(is.na(kiva))
##                 id      funded_amount        loan_amount           activity 
##                  0                  0                  0                  0 
##             sector            country             region           currency 
##                  0                  0                  0                  0 
##         partner_id        posted_time        funded_time     term_in_months 
##                  0                  0                  0                  0 
##       lender_count repayment_interval 
##                  0                  0

Cek structure data

str(kiva)
## 'data.frame':    323279 obs. of  14 variables:
##  $ id                : int  653051 653053 653068 653063 653084 653067 653078 653082 653048 653060 ...
##  $ funded_amount     : num  300 575 150 200 400 200 400 475 625 200 ...
##  $ loan_amount       : num  300 575 150 200 400 200 400 475 625 200 ...
##  $ activity          : Factor w/ 154 levels "Adult Care","Agriculture",..: 62 127 140 50 90 42 11 87 60 127 ...
##  $ sector            : Factor w/ 15 levels "Agriculture",..: 7 14 14 2 7 1 13 10 7 14 ...
##  $ country           : Factor w/ 82 levels "Afghanistan",..: 52 52 27 52 52 27 52 52 52 52 ...
##  $ region            : Factor w/ 9204 levels "","\"\"The first May\"\" village",..: 4377 4377 5172 4377 115 5172 2645 4377 4377 4377 ...
##  $ currency          : Factor w/ 66 levels "ALL","AMD","AZN",..: 44 44 22 44 44 22 44 44 44 44 ...
##  $ partner_id        : int  247 247 334 247 245 334 245 245 247 247 ...
##  $ posted_time       : Factor w/ 322089 levels "2014-01-01 04:49:26",..: 5 7 22 17 38 21 32 36 2 14 ...
##  $ funded_time       : Factor w/ 261846 levels "2014-01-01 12:18:55",..: 63 60 7 3 18 11 1138 15 204 1 ...
##  $ term_in_months    : int  12 11 43 11 14 43 14 14 11 11 ...
##  $ lender_count      : int  12 14 6 8 16 8 8 19 24 3 ...
##  $ repayment_interval: Factor w/ 3 levels "bullet","irregular",..: 2 2 1 2 3 1 3 3 2 2 ...

Apabila data bersifat unique, penggunaan integer sudah tepat. Apabila data bersifat berulang, penggunaannya adalah factor.

Perbaiki tipe data yang belum sesuai

  • funded_time

  • posted_time

Mengubah tipe data ke tipe date dapat menggunakan as.Date(). Pertama-tama, cek format tanggal pada variabel tersebut.

tail(kiva)

Format tanggal:

%Y: untuk tahun dengan 4 digit

%y: untuk tahun dengan 2 digit

%m: untuk bulan dengan angka

%b: untuk bulan dengan nama bulan “January”

%d: untuk tanggal 2 digit

Mengubah tipe date

kiva$posted_time = as.Date(kiva$posted_time, format = "%Y-%m-%d %H:%M:%S")
class(kiva$posted_time)
## [1] "Date"
kiva$funded_time = as.Date(kiva$funded_time, format = "%Y-%m-%d %H:%M:%S")
class(kiva$funded_time)
## [1] "Date"

Apabila salah dalam format tanggal, akan menjadi missing value.

Lakukan feature engineering, buatlah kolom baru bernama range_time yang diperoleh dari selisih funded_time dan posted_time

kiva$range_time = kiva$funded_time - kiva$posted_time
head(kiva)

Membuat kolom funded_month dari variable funded_time

kiva$funded_month = months(kiva$funded_time, abbreviate = T)

Inspect data

head(kiva)

Mengubah Susuan Kolom Menggunakan Base R

#kiva[,c("loan_amount","funded_amount")]

Ada package untuk hal tersebut namun dipelajari minggu depan hehehe sabar yakk.

Untuk memperoleh summary data gunakan function summary()

summary(kiva)
##        id          funded_amount       loan_amount      
##  Min.   : 653047   Min.   :    25.0   Min.   :    25.0  
##  1st Qu.: 737420   1st Qu.:   275.0   1st Qu.:   275.0  
##  Median : 827056   Median :   500.0   Median :   500.0  
##  Mean   : 826774   Mean   :   828.8   Mean   :   828.8  
##  3rd Qu.: 915291   3rd Qu.:  1000.0   3rd Qu.:  1000.0  
##  Max.   :1002884   Max.   :100000.0   Max.   :100000.0  
##                                                         
##                       activity              sector             country      
##  Farming                  : 33610   Agriculture:86509   Philippines: 81199  
##  General Store            : 31087   Food       :68752   Kenya      : 31947  
##  Personal Housing Expenses: 15616   Retail     :62118   El Salvador: 20543  
##  Agriculture              : 14309   Services   :20550   Cambodia   : 13402  
##  Food Production/Sales    : 13950   Housing    :16318   Peru       : 12799  
##  Retail                   : 13728   Clothing   :15840   Uganda     : 11832  
##  (Other)                  :200979   (Other)    :53192   (Other)    :151557  
##         region          currency        partner_id     posted_time        
##            : 26253   PHP    : 81199   Min.   :  9.0   Min.   :2014-01-01  
##  Kaduna    :  5466   USD    : 52751   1st Qu.:125.0   1st Qu.:2014-07-11  
##  Lahore    :  4322   KES    : 31467   Median :145.0   Median :2015-01-12  
##  Kisii     :  3324   PEN    : 12225   Mean   :166.7   Mean   :2015-01-08  
##  Cusco     :  3013   UGX    : 11772   3rd Qu.:199.0   3rd Qu.:2015-07-09  
##  Thanh Hoá:  2099   PKR    : 11647   Max.   :469.0   Max.   :2015-12-31  
##  (Other)   :278802   (Other):122218                                       
##   funded_time         term_in_months   lender_count     repayment_interval
##  Min.   :2014-01-01   Min.   :  2.0   Min.   :   1.00   bullet   : 32653  
##  1st Qu.:2014-07-24   1st Qu.:  8.0   1st Qu.:   8.00   irregular:130580  
##  Median :2015-01-24   Median : 13.0   Median :  15.00   monthly  :160046  
##  Mean   :2015-01-23   Mean   : 13.9   Mean   :  22.85                     
##  3rd Qu.:2015-07-24   3rd Qu.: 14.0   3rd Qu.:  28.00                     
##  Max.   :2016-02-25   Max.   :158.0   Max.   :2986.00                     
##                                                                           
##   range_time       funded_month      
##  Length:323279     Length:323279     
##  Class :difftime   Class :character  
##  Mode  :numeric    Mode  :character  
##                                      
##                                      
##                                      
## 

Mengubah Tipe Data Funded_month Menjadi Factor

kiva$funded_month =  as.factor(kiva$funded_month)
summary(kiva)
##        id          funded_amount       loan_amount      
##  Min.   : 653047   Min.   :    25.0   Min.   :    25.0  
##  1st Qu.: 737420   1st Qu.:   275.0   1st Qu.:   275.0  
##  Median : 827056   Median :   500.0   Median :   500.0  
##  Mean   : 826774   Mean   :   828.8   Mean   :   828.8  
##  3rd Qu.: 915291   3rd Qu.:  1000.0   3rd Qu.:  1000.0  
##  Max.   :1002884   Max.   :100000.0   Max.   :100000.0  
##                                                         
##                       activity              sector             country      
##  Farming                  : 33610   Agriculture:86509   Philippines: 81199  
##  General Store            : 31087   Food       :68752   Kenya      : 31947  
##  Personal Housing Expenses: 15616   Retail     :62118   El Salvador: 20543  
##  Agriculture              : 14309   Services   :20550   Cambodia   : 13402  
##  Food Production/Sales    : 13950   Housing    :16318   Peru       : 12799  
##  Retail                   : 13728   Clothing   :15840   Uganda     : 11832  
##  (Other)                  :200979   (Other)    :53192   (Other)    :151557  
##         region          currency        partner_id     posted_time        
##            : 26253   PHP    : 81199   Min.   :  9.0   Min.   :2014-01-01  
##  Kaduna    :  5466   USD    : 52751   1st Qu.:125.0   1st Qu.:2014-07-11  
##  Lahore    :  4322   KES    : 31467   Median :145.0   Median :2015-01-12  
##  Kisii     :  3324   PEN    : 12225   Mean   :166.7   Mean   :2015-01-08  
##  Cusco     :  3013   UGX    : 11772   3rd Qu.:199.0   3rd Qu.:2015-07-09  
##  Thanh Hoá:  2099   PKR    : 11647   Max.   :469.0   Max.   :2015-12-31  
##  (Other)   :278802   (Other):122218                                       
##   funded_time         term_in_months   lender_count     repayment_interval
##  Min.   :2014-01-01   Min.   :  2.0   Min.   :   1.00   bullet   : 32653  
##  1st Qu.:2014-07-24   1st Qu.:  8.0   1st Qu.:   8.00   irregular:130580  
##  Median :2015-01-24   Median : 13.0   Median :  15.00   monthly  :160046  
##  Mean   :2015-01-23   Mean   : 13.9   Mean   :  22.85                     
##  3rd Qu.:2015-07-24   3rd Qu.: 14.0   3rd Qu.:  28.00                     
##  Max.   :2016-02-25   Max.   :158.0   Max.   :2986.00                     
##                                                                           
##   range_time        funded_month   
##  Length:323279     Dec    : 33365  
##  Class :difftime   Mar    : 30336  
##  Mode  :numeric    Jul    : 29902  
##                    Oct    : 28250  
##                    Nov    : 27443  
##                    Aug    : 26284  
##                    (Other):147699

Subsetting

  1. Tampilkan peminjam yang berasal dari sector retail dengan jumlah pinjaman lebih dari 1000 USD
class(kiva$loan_amount)
class(kiva$funded_amount)

#kiva[kiva$funded_amount == kiva$loan_amount, ]
levels(kiva$sector)
kiva[kiva$sector == "Retail" & kiva$loan_amount > 1000, ]

Penggunaan () digunakan untuk function. Penggunaan [] digunakan untuk kondisi/subset dengan format [row, column].

  1. Apakah variabel funded_amount menampilkan informasi yang sama dengan variabel loan_amount untuk semua observasi?
nrow(kiva[kiva$funded_amount == kiva$loan_amount, ])
## [1] 323279
  1. Tampilkan pinjaman yang memiliki waktu tunggu selama lebih dari 30 hari dengan nilai loan_amount lebih rendah dari 500
kiva[kiva$range_time > 30 & kiva$loan_amount < 500, ]
  1. Tampilkan variabel sector dan country yang memilih repayment_interval bullet
kiva[kiva$repayment_interval == "bullet", c("sector","country", "repayment_interval") ]
  1. Tampilkan untuk peminjam yang berasal dari tipe activity fnb sebagai berikut
fnb <- c("Beverages","Cafe","Catering","Food", "Restaurant")
# Cara 2
kiva[kiva$activity %in% fnb, ]
data2 = kiva[kiva$activity %in% fnb, ]
data2$activity = droplevels(data2$activity)
levels(data2$activity)
## [1] "Beverages"  "Cafe"       "Catering"   "Food"       "Restaurant"

Mengambil Activity yang Mengandung Kata “Food”

Menggunakan package stringr

library(stringr)
kiva[str_detect(string = kiva$activity, pattern = c("Beverages")), ]

Sampling

dat <- c("Wisma Asia","BLI Sentul","Menara BCA", "Pondok Indah", "Bekasi")
set.seed(1)
# Set.seed membuat sampling random tetap menghasilkan sample yang sama. 1 itu angka apa? 
sample(dat,3)
## [1] "Wisma Asia"   "Pondok Indah" "Menara BCA"

Lakukan sampling untuk 5 observasi data kiva

set.seed(1)
data_5 =  kiva[sample(nrow(kiva), 5), ]

Untuk Menyimpan Data CSV

write.csv(data_5,file = "data_input/datakiva5.csv", row.names = F)
#Penggunaan rownames F menyebabkan index row tidak tergenerate dalam csv.

Penambahan eval = F pada chunk menimbulkan ketika knit, data observasi tidak tercetak semua.

Data Aggregation

Table

table() akan menampilkan frekuensi tiap kategori dari data

Tampilkan banyaknya pinjaman pada data kiva dari masing-masing sector

table(kiva$sector)
## 
##    Agriculture           Arts       Clothing   Construction      Education 
##          86509           5324          15840           3377          15752 
##  Entertainment           Food         Health        Housing  Manufacturing 
##            373          68752           3686          16318           3656 
##   Personal Use         Retail       Services Transportation      Wholesale 
##          12836          62118          20550           7831            357

Tampilkan proporsi dari masing-masing sector

prop.table(table(kiva$sector))
## 
##    Agriculture           Arts       Clothing   Construction      Education 
##    0.267598576    0.016468747    0.048997924    0.010446085    0.048725714 
##  Entertainment           Food         Health        Housing  Manufacturing 
##    0.001153802    0.212670789    0.011401916    0.050476523    0.011309117 
##   Personal Use         Retail       Services Transportation      Wholesale 
##    0.039705641    0.192149815    0.063567383    0.024223658    0.001104309
round(prop.table(table(kiva$sector)) ,2)
## 
##    Agriculture           Arts       Clothing   Construction      Education 
##           0.27           0.02           0.05           0.01           0.05 
##  Entertainment           Food         Health        Housing  Manufacturing 
##           0.00           0.21           0.01           0.05           0.01 
##   Personal Use         Retail       Services Transportation      Wholesale 
##           0.04           0.19           0.06           0.02           0.00

Tampilkan proporsi tipe pembayaran yang dipilih peminjam

round(prop.table(table(kiva$repayment_interval)),2)
## 
##    bullet irregular   monthly 
##       0.1       0.4       0.5

Sort

Mengurutkan Table dari yang Terbesar Hingga yang Terkecil

Cara 1

sort(round(prop.table(table(kiva$sector)) ,2), decreasing = T)
## 
##    Agriculture           Food         Retail       Services       Clothing 
##           0.27           0.21           0.19           0.06           0.05 
##      Education        Housing   Personal Use           Arts Transportation 
##           0.05           0.05           0.04           0.02           0.02 
##   Construction         Health  Manufacturing  Entertainment      Wholesale 
##           0.01           0.01           0.01           0.00           0.00

Cara 2

table_sector = data.frame(round(prop.table(table(kiva$sector)) ,2))
table_sector
table_sector[order(table_sector$Freq, decreasing = T), ]
head(table_sector[order(table_sector$Freq, decreasing = T), ],3)
table(kiva$funded_month, kiva$sector)
##      
##       Agriculture Arts Clothing Construction Education Entertainment Food
##   Apr        6340  396     1214          262       917            18 5010
##   Aug        7809  492     1249          247      1279            40 5338
##   Dec        8486  570     1623          322      2145            40 6800
##   Feb        5521  365     1118          262      1226            32 5233
##   Jan        5906  319     1341          254      1112            30 5344
##   Jul        8391  383     1477          315      1296            25 6168
##   Jun        7878  426     1166          299      1142            21 5274
##   Mar        8091  491     1425          335      1227            27 6703
##   May        7464  441     1342          288      1029            28 5400
##   Nov        6612  511     1305          237      1438            36 5936
##   Oct        7190  434     1367          277      1552            31 5953
##   Sep        6821  496     1213          279      1389            45 5593
##      
##       Health Housing Manufacturing Personal Use Retail Services Transportation
##   Apr    197    1147           316          639   4487     1541            578
##   Aug    311    1278           277          935   4860     1615            533
##   Dec    583    1529           350         2412   5785     1965            721
##   Feb    239    1089           333          554   4333     1551            620
##   Jan    297    1089           234          857   4721     1690            676
##   Jul    335    1708           270          927   5972     1926            679
##   Jun    243    1497           303          633   4896     1707            625
##   Mar    299    1596           347          825   6077     2018            841
##   May    298    1433           288          574   4898     1790            635
##   Nov    293    1286           296         1821   5436     1560            646
##   Oct    317    1408           320         1387   5669     1639            664
##   Sep    274    1258           322         1272   4984     1548            613
##      
##       Wholesale
##   Apr        29
##   Aug        21
##   Dec        34
##   Feb        30
##   Jan        20
##   Jul        30
##   Jun        40
##   Mar        34
##   May        27
##   Nov        30
##   Oct        42
##   Sep        20
round(prop.table(table(kiva$funded_month, kiva$sector)),2)
##      
##       Agriculture Arts Clothing Construction Education Entertainment Food
##   Apr        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Aug        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Dec        0.03 0.00     0.01         0.00      0.01          0.00 0.02
##   Feb        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Jan        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Jul        0.03 0.00     0.00         0.00      0.00          0.00 0.02
##   Jun        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Mar        0.03 0.00     0.00         0.00      0.00          0.00 0.02
##   May        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Nov        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Oct        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##   Sep        0.02 0.00     0.00         0.00      0.00          0.00 0.02
##      
##       Health Housing Manufacturing Personal Use Retail Services Transportation
##   Apr   0.00    0.00          0.00         0.00   0.01     0.00           0.00
##   Aug   0.00    0.00          0.00         0.00   0.02     0.00           0.00
##   Dec   0.00    0.00          0.00         0.01   0.02     0.01           0.00
##   Feb   0.00    0.00          0.00         0.00   0.01     0.00           0.00
##   Jan   0.00    0.00          0.00         0.00   0.01     0.01           0.00
##   Jul   0.00    0.01          0.00         0.00   0.02     0.01           0.00
##   Jun   0.00    0.00          0.00         0.00   0.02     0.01           0.00
##   Mar   0.00    0.00          0.00         0.00   0.02     0.01           0.00
##   May   0.00    0.00          0.00         0.00   0.02     0.01           0.00
##   Nov   0.00    0.00          0.00         0.01   0.02     0.00           0.00
##   Oct   0.00    0.00          0.00         0.00   0.02     0.01           0.00
##   Sep   0.00    0.00          0.00         0.00   0.02     0.00           0.00
##      
##       Wholesale
##   Apr      0.00
##   Aug      0.00
##   Dec      0.00
##   Feb      0.00
##   Jan      0.00
##   Jul      0.00
##   Jun      0.00
##   Mar      0.00
##   May      0.00
##   Nov      0.00
##   Oct      0.00
##   Sep      0.00
data.frame(round(prop.table(table(kiva$funded_month, kiva$sector)),2))

Cross Tabulation

xtab() menampilkan jumlah variabel numerik untuk tiap kategori.

xtab(formula=..., data=...)

Table = yang dicari frekuensinya Crosstab = bisa memasukkan variabel numeriknya Aggregate = summary bisa dihitung

Ket:

  • formula = numerik ~ kategorik
  • data = data yang digunakan

  • Tampilkan loan amount berdasarkan sector dan repayment_interval

xtabs(formula = kiva$loan_amount  ~ kiva$sector + kiva$repayment_interval)
##                 kiva$repayment_interval
## kiva$sector        bullet irregular  monthly
##   Agriculture    17032775  13625400 37422300
##   Arts             817925   1715400  3090800
##   Clothing         265100   7640325  9891725
##   Construction      82225    730000  2655725
##   Education        925125   2967025 11616425
##   Entertainment     30425     66075   307350
##   Food            1544775  28533200 28181500
##   Health            62525   1473250  2764825
##   Housing          299300   1185175  9972950
##   Manufacturing    217375    987525  2015125
##   Personal Use    1130575    757100  4566300
##   Retail          1559975  24151100 21039750
##   Services        1522500   5781500 13531175
##   Transportation   117550   1731575  3384825
##   Wholesale         57325    153225   336950
xtabs(formula = loan_amount  ~ sector + repayment_interval ,data = kiva)
##                 repayment_interval
## sector             bullet irregular  monthly
##   Agriculture    17032775  13625400 37422300
##   Arts             817925   1715400  3090800
##   Clothing         265100   7640325  9891725
##   Construction      82225    730000  2655725
##   Education        925125   2967025 11616425
##   Entertainment     30425     66075   307350
##   Food            1544775  28533200 28181500
##   Health            62525   1473250  2764825
##   Housing          299300   1185175  9972950
##   Manufacturing    217375    987525  2015125
##   Personal Use    1130575    757100  4566300
##   Retail          1559975  24151100 21039750
##   Services        1522500   5781500 13531175
##   Transportation   117550   1731575  3384825
##   Wholesale         57325    153225   336950
  • Tampilkan secara visual crosstab yang telat dibuat
plot(xtabs(formula = loan_amount  ~ sector + repayment_interval ,data = kiva))

  • Tampilkan visualisasi dengan heatmap
heatmap(xtabs(formula = loan_amount  ~ sector + repayment_interval ,data = kiva), Rowv = NA, Colv = NA, cexCol = 0.8, cexRow = 0.8)

Aggregate

Gunakan fungsi aggregate() untuk aggregasi data lebih fleksibel, dapat menggunakan beragam nilai statistik.

aggreagete(formula=..., data=..., FUN=...)

Ket:

  • formula = numerik ~ kategorik
  • data = data yang ingin digunakan
  • FUN (function)= nilai statistik tertentu:
    • sum = jumlah
    • min = nilai min
    • max = nilai max
    • mean = rata rata
    • length = frequency
    • median = nilai tengah

Perbedaan dengan crosstab, pada crosstab hanya menampilkan sum saja.

Tampilkan rata-rata pinjaman berdasarkan sector dan repayment_interval

aggr_sector = aggregate(loan_amount  ~ sector + repayment_interval, data = kiva, FUN = mean)
aggr_sector[order(aggr_sector$loan_amount, decreasing = T), ]

Dive Deeper

  1. Tampilkan rata rata pinjaman yang diberikan oleh kiva dari masing-masing sector
mean_pinjaman = aggregate(loan_amount ~ sector, data = kiva, FUN = mean)
mean_pinjaman
  1. Urutkan nilai rata-rata pinjaman terbesar hingga terkecil dari setiap sector
sort_mean_pinj = mean_pinjaman[order(mean_pinjaman$loan_amount, decreasing = T), ]
sort_mean_pinj
  1. Tampilkan 3 sector yang memiliki rata-rata pinjaman terbesar dibandingkan sector lainnya
top3 = head(sort_mean_pinj,3)
top3
  1. Tampilkan jumlah pinjaman untuk sector Arts di setiap activity. Kemudian tampilkan 5 activity yang memiliki jumlah pinjaman paling besar
only_arts = kiva[kiva$sector == "Arts", c("activity","loan_amount","sector")]
only_arts
pinj_arts = aggregate(loan_amount ~ activity , data = only_arts, FUN = sum )
pinj_arts
sort_pinj_arts = pinj_arts[order(pinj_arts$loan_amount, decreasing = T),]
sort_pinj_arts
top5 = head(pinj_arts[order(pinj_arts$loan_amount, decreasing = T),],5)
  1. Dibulan apa kiva memberikan jumlah pinjaman paling besar?
pinj_month = aggregate(loan_amount ~ funded_month, data = kiva, FUN = sum)
order_pinj_month = pinj_month[order(pinj_month$loan_amount, decreasing = T),]
top = head(order_pinj_month,1)
top
  1. Tampilkan 5 sector yang membutuhkan waktu tunggu paling lama dibandingkan sector lainnya untuk mendapatkan pinjaman
#durasi = aggregate(range_time ~ sector, data = kiva, FUN = sum)
head(aggregate(range_time ~ sector, data = kiva, FUN = sum)[order(aggregate(range_time ~ sector, data = kiva, FUN = sum)$range_time, decreasing = T),],5)
loan = read.csv(file = "data_input/loan.csv")
loan

Latihan Soal

Buat 3 pertanyaan dari data loan, kemudian berikan insight dari output tersebut!

# Aku ingin tau yang credit_historynya poor alias NPL. Tapi sebelum itu, aku mau cek apakah ada missing values?
cek_null = anyNA(is.na(loan))
cek_null
## [1] FALSE
# Hasilnya ternyata False. Berarti tidak ada missing values. Sekarang aku ingin tau kebanyakan orang yang credit_historynya poor itu profilenya seperti apa. Dimulai dari dapetin data yang credit_historynya hanya poor.

NPL = loan[loan$credit_history == "poor",]
NPL
# Oke, sekarang uda dapet datanya. Aku pengen tau nih, dari yang poor ini, proportion purpose itu berapa aja?

top_purpose = table(NPL$purpose)
top_purpose
## 
##             business                  car                 car0 
##                   23                   25                    2 
##            education furniture/appliances          renovations 
##                    5                   30                    3
# Oke, udah dapet proporsinya. Sekarang mari kita ketahui secara persentase, kontribusinya seberapa?

persentase_purpose = (round(prop.table(top_purpose),2))
persentase_purpose
## 
##             business                  car                 car0 
##                 0.26                 0.28                 0.02 
##            education furniture/appliances          renovations 
##                 0.06                 0.34                 0.03
# Oke uda dapet, sekarang tunjukkan top 3 nya.

sort = head(sort(persentase_purpose, decreasing = T),3)
sort
## 
## furniture/appliances                  car             business 
##                 0.34                 0.28                 0.26

Correction

Mengganti Karena Kemungkinan Typo

loan$purpose <- str_replace(string = loan$purpose, pattern = "car0", replacement = "car")
loan
factor_loan_purpose = as.factor(loan$purpose)

levels(factor_loan_purpose)
## [1] "business"             "car"                  "education"           
## [4] "furniture/appliances" "renovations"

Day 2

Untuk menjalankan chunk gunakan ctrl + alt + p

Membuat function

Membuat function head and tail.

headtail = function(x) {
  dat_head = head(x)
  dat_tail = tail(x)
  
  rbind(dat_head, dat_tail)
}
headtail(kiva)

Kapan harus menggunakan parameter? Penggunaan parameter adalah ketika susunan parameternya tidak beraturan (tidak sesuai aturan). Apabila tidak beraturan namun tidak dimention nama parameternya, R akan membaca sesuai dengan default urutannya.

Membuat Daily Report

dailyreport = function(){
  kiva = read.csv("data_input/loan_kiva.csv")
  
  kiva$posted_time = as.Date(kiva$posted_time, format = "%Y-%m-%d %H:%M:%S")

  kiva$funded_time = as.Date(kiva$funded_time, format = "%Y-%m-%d %H:%M:%S")

  kiva$range_time = kiva$funded_time - kiva$posted_time
  
  result = aggregate(range_time ~ sector, data = kiva, FUN = mean)
  
  head(result[order(result$range_time, decreasing = T), ],5)
}

dailyreport()

Bagaimana untuk menjalankan perintah yang sudah disimpan itu tadi? Digunakan function source untuk menjalankan function dari Rscript.

source("dailyreport.R")
dailyreport()

Parameter pada chunk: - echo = ketika true, maka chunk akan dijalankan namun tidak ditampilkan pada html. - warning = false, tidak akan memunculkan warning message. - include = true, chunk akan menjalankan dan menampilkan output sekaligus pada html. - eval = false, tidak akan menjalankan chunk tersebut.