Last chance! 50% off DataCamp Premium
Sale ends in
Untuk meningkatkan peluang sukses dalam wawancara R, selalu bermanfaat mengetahui terlebih dahulu pertanyaan apa yang mungkin diajukan kepada Anda jika Anda sedang mencari kerja—atau pertanyaan apa yang dapat Anda ajukan kepada kandidat jika Anda adalah manajer perekrutan atau perekrut.
Artikel ini membahas 40 pertanyaan wawancara pemrograman R yang mendasar beserta jawabannya untuk semua tingkat senioritas, serta beberapa pertanyaan wawancara umum. Demi kemudahan, seluruh pertanyaan teknis dibagi menjadi tiga tingkat: pemula, menengah, dan lanjutan.
Sebagai sumber tambahan untuk persiapan wawancara pemrograman R Anda, pertimbangkan blog dan kursus bermanfaat berikut:
Di awal wawancara R, pewawancara dapat menanyakan beberapa pertanyaan umum non-teknis tentang pengalaman keseluruhan kandidat dengan R. Misalnya:
Jika Anda sedang mencari kerja, Anda sebaiknya memikirkan pertanyaan-pertanyaan ini dan yang serupa sebelumnya dan menyiapkan jawaban Anda. Jangan khawatir jika Anda belum memiliki pengalaman kerja nyata dengan R: menjelaskan magang Anda dalam pemrograman R atau proyek R individu atau kelompok yang Anda selesaikan selama studi sudah memadai.
Selain itu, jika Anda melamar posisi tingkat pemula, pewawancara tidak selalu mengharapkan dari Anda pengalaman kerja yang luas (atau bahkan ada) dalam R. Ingat bahwa karena Anda diundang ke wawancara ini, perusahaan tersebut sudah menganggap resume Anda menarik.
Mari mulai dengan beberapa pertanyaan teknis dasar R yang mungkin Anda hadapi dari calon pemberi kerja. Ini menuntut Anda menguasai dasar-dasar dan memiliki sedikit pengalaman praktis menggunakan R.
R adalah bahasa pemrograman dan lingkungan yang banyak digunakan untuk menyelesaikan masalah data science dan secara khusus dirancang untuk komputasi statistik dan visualisasi data. Karakteristik utamanya meliputi:
Terdapat beberapa tipe data di R, termasuk:
TRUE dan FALSE, yang di tingkat rendah direpresentasikan sebagai 1 dan 0.Base R menyediakan fungsi-fungsi esensial untuk mengimpor data:
read.table()—fungsi paling umum di base R untuk mengimpor data, menerima data tabular dengan pemisah kolom jenis apa pun, termasuk pemisah spesifik seperti |.
read.csv()—file comma-separated values (CSV) dengan . sebagai pemisah desimal.
read.csv2()—file semicolon-separated values dengan , sebagai pemisah desimal.
read.delim()—file tab-separated values (TSV) dengan . sebagai pemisah desimal.
read.delim2()—file tab-separated values (TSV) dengan , sebagai pemisah desimal.
Dalam praktiknya, fungsi-fungsi ini dapat digunakan untuk mengimpor data tabular dengan pemisah kolom dan desimal jenis apa pun: menggunakannya untuk format file tertentu hanyalah soal konvensi dan pengaturan baku. Misalnya, berikut sintaks fungsi pertama: read.table(file, header = FALSE, sep = "", dec = "."). Fungsi lainnya memiliki parameter yang sama dengan pengaturan baku berbeda yang selalu dapat ditimpa secara eksplisit.
Paket tidyverse readr dan readxl menyediakan beberapa fungsi lain untuk mengimpor format file spesifik. Masing-masing fungsi tersebut dapat disetel lebih lanjut melalui berbagai parameter opsional.
read_tsv()—file tab-separated values (TSV).
read_fwf()—file lebar-tetap (fixed-width).
read_log()—file web log.
read_table(), read_csv(), read_csv2(), dan read_delim()—setara dengan fungsi-fungsi base R.
read_excel()—file Excel.
read_csv()—setara dengan fungsi dari base R.
Untuk menggali lebih dalam pemuatan data di R, Anda dapat mengikuti tutorial Cara Mengimpor Data ke R.
Paket R adalah kumpulan fungsi, kode, data, dan dokumentasi, yang merupakan ekstensi dari bahasa pemrograman R dan dirancang untuk menyelesaikan jenis tugas tertentu. R hadir dengan sejumlah paket pra-instal, dan paket lain dapat dipasang oleh pengguna dari repositori. Repositori terpusat paling populer yang menyimpan ribuan paket R berbagai jenis disebut Comprehensive R Archive Network (CRAN).
Untuk memasang paket R langsung dari CRAN, kita perlu meneruskan nama paket yang diapit tanda kutip ke fungsi install.packages(), seperti: install.packages("package_name"). Untuk memasang lebih dari satu paket dari CRAN sekaligus, kita perlu menggunakan vektor karakter yang berisi nama paket yang diapit tanda kutip, seperti: install.packages(c("package_name_1", "package_name_2"). Untuk memasang paket R secara manual, kita perlu terlebih dahulu mengunduh paket sebagai file zip ke komputer dan kemudian menjalankan install.packages() function:
install.packages("path_to_the_locally_stored_zipped_package_file", repos=NULL, type="source")
Untuk memuat paket R yang telah dipasang ke lingkungan kerja R, kita dapat menggunakan fungsi library() atau require(). Keduanya menerima nama paket tanpa tanda kutip dan memuat paket tersebut, misalnya, library(caret). Namun, perilaku kedua fungsi ini berbeda saat tidak menemukan paket yang diperlukan: library() melempar galat dan menghentikan eksekusi program, sedangkan require() menampilkan peringatan dan melanjutkan eksekusi program.
1. Dari satu atau lebih vektor dengan panjang yang sama—menggunakan fungsi data.frame():
df <- data.frame(vector_1, vector_2)
2. Dari sebuah matriks—menggunakan fungsi data.frame():
df <- data.frame(my_matrix)
3. Dari daftar vektor dengan panjang yang sama—menggunakan fungsi data.frame():
df <- data.frame(list_of_vectors)
4. Dari data frame lain:
Untuk menggabungkan data frame secara horizontal (hanya jika data frame memiliki jumlah baris yang sama, dan rekornya sama serta dalam urutan yang sama) —menggunakan fungsi cbind():
df <- cbind(df1, df2)
Untuk menggabungkan data frame secara vertikal (hanya jika memiliki jumlah kolom yang sama dengan nama identik, tipe data yang sama, dan muncul dalam urutan yang sama) —menggunakan fungsi rbind():
df <- rbind(df1, df2)
$:df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
df$col_3 <- c(5, 1, 18, 16)
print(df)
Keluaran:
col_1 col_2
1 10 a
2 11 b
3 12 c
4 13 d
col_1 col_2 col_3
1 10 a 5
2 11 b 1
3 12 c 18
4 13 d 16
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
df["col_3"] <- c(5, 1, 18, 16)
print(df)
Keluaran:
col_1 col_2
1 10 a
2 11 b
3 12 c
4 13 d
col_1 col_2 col_3
1 10 a 5
2 11 b 1
3 12 c 18
4 13 d 16
Menggunakan fungsi cbind():
df <- data.frame(col_1=10:13, col_2=c("a", "b", "c", "d"))
print(df)
df <- cbind(df, col_3=c(5, 1, 18, 16))
print(df)
Keluaran:
col_1 col_2
1 10 a
2 11 b
3 12 c
4 13 d
col_1 col_2 col_3
1 10 a 5
2 11 b 1
3 12 c 18
4 13 d 16
Dalam ketiga kasus tersebut, kita dapat menetapkan sebuah nilai tunggal atau vektor atau menghitung kolom baru berdasarkan kolom yang sudah ada pada data frame itu atau data frame lainnya.
1. Dengan menggunakan fungsi select() dari paket dplyr dalam koleksi tidyverse. Nama setiap kolom yang akan dihapus dituliskan dengan tanda minus di depannya:
df <- select(df, -col_1, -col_3)
Jika kita justru memiliki terlalu banyak kolom untuk dihapus, lebih masuk akal mempertahankan kolom lain ketimbang menghapus kolom yang dimaksud. Dalam kasus ini, sintaksnya mirip, tetapi nama kolom yang dipertahankan tidak diawali tanda minus:
df <- select(df, col_2, col_4)
2. Dengan menggunakan fungsi bawaan subset() dari base R. Jika kita perlu menghapus hanya satu kolom, kita tetapkan parameter select dari fungsi tersebut dengan nama kolom yang diawali tanda minus. Untuk menghapus lebih dari satu kolom, kita tetapkan parameter ini dengan sebuah vektor yang berisi nama kolom yang diperlukan dan diawali tanda minus:
df <- subset(df, select=-col_1)
df <- subset(df, select=-c(col_1, col_3))
Jika kita justru memiliki terlalu banyak kolom untuk dihapus, lebih masuk akal mempertahankan kolom lain ketimbang menghapus kolom yang dimaksud. Dalam kasus ini, sintaksnya mirip, tetapi tanpa tanda minus:
df <- subset(df, select=col_2)
df <- subset(df, select=c(col_2, col_4))
Factor di R adalah tipe data khusus yang menerima kategori (alias level) dari himpunan nilai yang telah ditentukan. Kategori ini tampak seperti karakter, tetapi di tingkat rendah disimpan sebagai integer. Sering kali, kategori tersebut memiliki urutan intrinsik. Misalnya, kolom dalam data frame yang berisi opsi skala Likert untuk menilai pandangan ("sangat setuju," "setuju," "agak setuju," "netral," "agak tidak setuju," "tidak setuju," "sangat tidak setuju") sebaiknya bertipe factor untuk menangkap urutan intrinsik ini dan merefleksikannya dengan tepat pada plot bertipe kategorikal.
RStudio adalah IDE (integrated development environment) sumber terbuka yang banyak digunakan sebagai antarmuka grafis untuk bekerja dengan bahasa pemrograman R mulai versi 3.0.1. Ia memiliki banyak fitur bermanfaat yang membuatnya sangat populer di kalangan pengguna R:
Untuk mempelajari lebih lanjut apa itu RStudio serta cara memasang dan mulai menggunakannya, Anda dapat mengikuti Tutorial RStudio.
R Markdown adalah paket R gratis dan sumber terbuka yang menyediakan kerangka penulisan untuk membangun proyek data science. Dengan menggunakannya, kita dapat menulis satu file .rmd yang menggabungkan narasi, kode, dan plot data, lalu merender file tersebut ke format keluaran yang dipilih. Karakteristik utama R Markdown adalah:
Untuk membuat fungsi yang ditentukan pengguna di R, kita menggunakan kata kunci function dengan sintaks berikut:
function_name <- function(parameters){
function body
}
return() (atau beberapa pernyataan) yang mengembalikan keluaran fungsi, atau pernyataan print() (atau beberapa pernyataan) untuk mencetak keluaran.Contoh fungsi sederhana yang ditentukan pengguna di R:
my_function <- function(x, y){
return(x + y)
}
Untuk praktisi yang lebih berpengalaman, kemungkinan pewawancara akan mengajukan beberapa pertanyaan yang memerlukan pengetahuan R yang lebih mendalam. Berikut beberapa yang perlu dipersiapkan:
Menggunakan operator penugasan <-, mis., my_var <- 1—cara paling umum untuk menetapkan nilai ke variabel di R.
Menggunakan operator sama dengan =, mis., my_var = 1—untuk menetapkan nilai ke argumen dalam definisi fungsi.
Menggunakan operator penugasan ke kanan ->, mis., my_var -> 1—dapat digunakan dalam pipe.
Menggunakan operator penugasan global, baik ke kiri (<<-) atau ke kanan (->>), mis., my_var <<- 1—untuk membuat variabel global di dalam definisi fungsi.
Nama variabel dapat berupa kombinasi huruf, digit, titik, dan garis bawah. Tidak boleh berisi simbol lain, termasuk spasi.
Nama variabel harus diawali dengan huruf atau titik.
Jika nama variabel diawali titik, titik tersebut tidak boleh diikuti digit.
Kata-kata yang dipesan (reserved words) di R (TRUE, for, NULL, dll.) tidak dapat digunakan sebagai nama variabel.
Nama variabel peka huruf besar/kecil.
Dalam kursus Writing Efficient R Code, Anda akan menemukan praktik terbaik lebih lanjut untuk menulis kode di R.
1. For loop—melakukan iterasi atas sebuah urutan sebanyak panjang urutan tersebut (kecuali digunakan pernyataan break dan/atau next) dan menjalankan set operasi yang sama pada setiap item urutan itu. Ini adalah jenis loop yang paling umum. Sintaks for loop di R sebagai berikut:
for (variable in sequence) {
operations
}
2. While loop—menjalankan set operasi yang sama hingga kondisi logis yang telah ditentukan (atau beberapa kondisi) terpenuhi—kecuali digunakan pernyataan break dan/atau next. Tidak seperti for loop, kita tidak tahu sebelumnya berapa jumlah iterasi yang akan dijalankan while loop. Sebelum menjalankan while loop, kita perlu menetapkan sebuah variabel (atau beberapa variabel) dan kemudian memperbarui nilainya di dalam isi loop pada setiap iterasi. Sintaks while loop di R sebagai berikut:
variable assignment
while (logical condition) {
operations
variable update
}
3. Repeat loop—berulang kali menjalankan set operasi yang sama hingga kondisi penghentian (break) yang telah ditentukan (atau beberapa kondisi) terpenuhi. Untuk memperkenalkan kondisi tersebut, repeat loop harus berisi blok kode if-statement, yang pada gilirannya harus menyertakan pernyataan break di dalamnya. Seperti while loop, kita tidak tahu sebelumnya berapa jumlah iterasi yang akan dijalankan repeat loop. Sintaks repeat loop di R sebagai berikut:
repeat {
operations
if(break condition) {
break
}
}
Anda dapat membaca lebih lanjut tentang Loop di R melalui tutorial terpisah kami.
Untuk mengagregasikan data di R, kita menggunakan fungsi aggregate(). Fungsi ini memiliki parameter esensial berikut, dalam urutan ini:
x—data frame yang akan diagregasikan.
by—daftar factor untuk pengelompokan.
FUN—fungsi agregat untuk menghitung statistik ringkasan tiap grup (mis., mean, max, min, count, sum).
1. Menggunakan fungsi cbind()—hanya jika data frame memiliki jumlah baris yang sama, dan rekornya sama serta dalam urutan yang sama:
df <- cbind(df1, df2)
2. Menggunakan fungsi rbind() untuk menggabungkan data frame secara vertikal—hanya jika memiliki jumlah kolom yang sama dengan nama identik, tipe data yang sama, dan muncul dalam urutan yang sama:
df <- rbind(df1, df2)
3. Menggunakan fungsi merge() untuk menggabungkan data frame berdasarkan kolom bersama, biasanya kolom ID:
df <- merge(df1, df2, by="ID")
df <- merge(df1, df2, by="ID", all.x=TRUE)
df <- merge(df1, df2, by="ID", all.y=TRUE)
df <- merge(df1, df2, by="ID", all=TRUE)
4. Menggunakan fungsi join() dari paket dplyr untuk menggabungkan data frame berdasarkan kolom bersama, biasanya kolom ID:
df <- join(df1, df2, by="ID", type="type_of_join")
Parameter type menerima salah satu nilai berikut: inner, left, right, atau full.
Kita dapat menggabungkan dua atau lebih string di R menggunakan fungsi paste() atau cat(). Pendekatan pertama lebih populer. Keduanya menerima sejumlah string untuk digabung dan juga dapat menerima parameter opsional sep (bersama beberapa parameter opsional lainnya)—karakter atau deretan karakter yang akan memisahkan string yang digabung dalam string hasil (baku: spasi).
Kita dapat mentranspos data frame atau matriks di R sehingga kolom menjadi baris dan sebaliknya. Untuk tujuan ini, kita perlu menggunakan fungsi t() dari base R. Contohnya:
df <- data.frame(col_1=c(10, 20, 30), col_2=c(11, 22, 33))
print(df)
transposed_df <- t(df)
print(transposed_df)
Keluaran:
col_1 col_2
1 10 11
2 20 22
3 30 33
[,1] [,2] [,3]
col_1 10 20 30
col_2 11 22 33
Kita dapat merantai beberapa operasi di R menggunakan operator pipe (%>%) yang disediakan oleh koleksi tidyverse. Menggunakan operator ini memungkinkan pembuatan pipeline fungsi di mana keluaran dari fungsi pertama diteruskan sebagai masukan ke fungsi kedua dan seterusnya hingga pipeline berakhir. Ini menghilangkan kebutuhan membuat variabel tambahan dan secara signifikan meningkatkan keterbacaan kode secara keseluruhan.
Contoh penggunaan operator pipe pada data frame:
df <- data.frame(a=1:4, b=11:14, c=21:24)
print(df)
df_new <- df %>% select(a, b) %>% filter(a > 2)
print(df_new)
Keluaran:
a b c
1 1 11 21
2 2 12 22
3 3 13 23
4 4 14 24
a b
1 3 12
2 4 13
Karena visualisasi data adalah salah satu kekuatan bahasa pemrograman R, kita dapat membuat semua jenis plot data di R:
Jalur keterampilan Data Visualization with R akan membantu Anda memperluas wawasan di bidang grafik R. Jika Anda lebih suka belajar visualisasi data di R dalam konteks yang lebih luas, jelajahi jalur karier yang lengkap dan ramah pemula Data Scientist with R.
Jika kita mencoba melakukan operasi pada dua vektor R dengan panjang berbeda, interpreter R akan mendeteksi vektor yang lebih pendek, mendaur ulang itemnya dalam urutan yang sama hingga panjang kedua vektor tersebut cocok, lalu melakukan operasi yang diperlukan pada vektor-vektor itu. Sebelum memulai daur ulang vektor, interpreter R akan menampilkan peringatan tentang ketidakcocokan panjang vektor di awal.
Misalnya, jika kita mencoba menjalankan penjumlahan berikut:
c(1, 2, 3, 4, 5) + c(1, 2, 3)
Vektor kedua, karena daur ulang vektor, akan diubah menjadi c(1, 2, 3, 1, 2). Maka, hasil akhir operasi ini adalah c(2, 4, 6, 5, 7).
Walau terkadang daur ulang vektor bisa bermanfaat (mis., ketika kita mengharapkan siklik nilai pada vektor), lebih sering hal ini tidak tepat dan menyesatkan. Karena itu, kita harus berhati-hati dan memperhatikan panjang vektor sebelum melakukan operasi pada keduanya.
Pernyataan next digunakan untuk melewati iterasi tertentu dan melompat ke iterasi berikutnya jika kondisi tertentu terpenuhi. Pernyataan break digunakan untuk menghentikan dan keluar dari loop pada iterasi tertentu jika kondisi tertentu terpenuhi. Saat digunakan di salah satu loop dalam dari loop bertingkat, pernyataan ini hanya keluar dari loop dalam tersebut.
Kedua pernyataan next dan break dapat digunakan pada jenis loop apa pun di R: for, while, dan repeat. Keduanya juga bisa digunakan dalam loop yang sama, mis.:
for(i in 1:10) {
if(i < 5)
next
if(i == 8)
break
print(i)}
Keluaran:
[1] 5
[1] 6
[1] 7
Fungsi str() mengembalikan struktur sebuah objek R dan informasi umum tentangnya, yang isinya bergantung pada struktur data objek tersebut. Misalnya, untuk vektor, fungsi ini mengembalikan tipe data item, rentang indeks item, dan nilai item (atau beberapa nilai pertama, jika vektor terlalu panjang). Untuk data frame, fungsi ini mengembalikan kelasnya (data.frame), jumlah observasi dan variabel, nama kolom, tipe data setiap kolom, dan beberapa nilai pertama setiap kolom.
Fungsi summary() mengembalikan statistik ringkasan untuk sebuah objek R. Fungsi ini paling sering diterapkan pada data frame dan matriks, di mana ia mengembalikan nilai minimum, maksimum, mean, dan median, serta kuartil ke-1 dan ke-3 untuk setiap kolom numerik, sementara untuk kolom factor, ia mengembalikan jumlah tiap level.
Fungsi subset() di R digunakan untuk mengekstrak baris dan kolom dari data frame atau matriks, atau elemen dari vektor, berdasarkan kondisi tertentu, mis.: subset(my_vector, my_vector > 10).
Sebaliknya, fungsi sample() di R hanya dapat diterapkan pada vektor. Ia mengekstrak sampel acak dengan ukuran yang telah ditentukan dari elemen vektor, dengan atau tanpa pengembalian. Misalnya, sample(my_vector, size=5, replace=TRUE)
1. Menggunakan fungsi transform() dan ifelse() dari base R:
df <- data.frame(col_1 = c(1, 3, 5, 7), col_2 = c(8, 6, 4, 2))
print(df)
# Menambahkan kolom col_3 ke data frame df
df <- transform(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)
Keluaran:
col_1 col_2
1 1 8
2 3 6
3 5 4
4 7 2
col_1 col_2 col_3
1 1 8 9
2 3 6 9
3 5 4 20
4 7 2 14
2. Menggunakan fungsi with() dan ifelse() dari base R:
df <- data.frame(col_1 = c(1, 3, 5, 7), col_2 = c(8, 6, 4, 2))
print(df)
# Menambahkan kolom col_3 ke data frame df
df["col_3"] <- with(df, ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)
Keluaran:
col_1 col_2
1 1 8
2 3 6
3 5 4
4 7 2
col_1 col_2 col_3
1 1 8 9
2 3 6 9
3 5 4 20
4 7 2 14
3. Menggunakan fungsi apply() dari base R:
df <- data.frame(col_1 = c(1, 3, 5, 7), col_2 = c(8, 6, 4, 2))
print(df)
# Menambahkan kolom col_3 ke data frame df
df["col_3"] <- apply(df, 1, FUN = function(x) if(x[1] < x[2]) x[1] + x[2] else x[1] * x[2])
print(df)
Keluaran:
col_1 col_2
1 1 8
2 3 6
3 5 4
4 7 2
col_1 col_2 col_3
1 1 8 9
2 3 6 9
3 5 4 20
4 7 2 14
4. Menggunakan fungsi mutate() dari paket dplyr dan fungsi ifelse() dari base R:
df <- data.frame(col_1 = c(1, 3, 5, 7), col_2 = c(8, 6, 4, 2))
print(df)
# Menambahkan kolom col_3 ke data frame df
df <- mutate(df, col_3 = ifelse(col_1 < col_2, col_1 + col_2, col_1 * col_2))
print(df)
Keluaran:
col_1 col_2
1 1 8
2 3 6
3 5 4
4 7 2
col_1 col_2 col_3
1 1 8 9
2 3 6 9
3 5 4 20
4 7 2 14
Untuk mengurai tanggal dari representasi string-nya di R, kita sebaiknya menggunakan paket lubridate dari koleksi tidyverse. Paket ini menawarkan berbagai fungsi untuk mengurai string dan mengekstrak tanggal standar darinya berdasarkan pola tanggal awal pada string tersebut. Fungsi-fungsi tersebut adalah ymd(), ymd_hm(), ymd_hms(), dmy(), dmy_hm(), dmy_hms(), mdy(), mdy_hm(), mdy_hms(), dll., di mana y, m, d, h, m, dan s masing-masing adalah year, month, day, hours, minutes, dan seconds.
Misalnya, jika kita menjalankan fungsi dmy() dengan meneruskannya salah satu string "05-11-2023", "05/11/2023" atau "05.11.2023", yang mewakili tanggal yang sama, kita akan menerima hasil yang sama: 2023-11-05. Ini karena pada ketiganya, meskipun memiliki simbol pemisah berbeda, kita sebenarnya memiliki pola yang sama: hari diikuti bulan diikuti tahun.
Fungsi switch() di R adalah pernyataan kendali cabang multi-arah yang mengevaluasi sebuah ekspresi terhadap item daftar. Sintaksnya sebagai berikut:
switch(expression, case_1, case_2, case_3....)
Ekspresi yang diteruskan ke fungsi switch() dapat bernilai angka atau string karakter, dan tergantung hal itu, perilaku fungsi berbeda.
1. Jika ekspresi bernilai angka, fungsi switch() mengembalikan item dari daftar berdasarkan kecocokan posisi (yaitu indeksnya sama dengan angka hasil evaluasi ekspresi). Jika angkanya lebih besar daripada jumlah item dalam daftar, switch() mengembalikan NULL. Misalnya:
switch(2, "circle", "triangle", "square")
Keluaran:
"triangle"
2. Jika ekspresi bernilai string karakter, fungsi switch() mengembalikan nilai berdasarkan namanya:
switch("red", "green"="apple", "orange"="carot", "red"="tomato", "yellow"="lemon")
Keluaran:
"tomato"
Jika ada beberapa kecocokan, nilai yang cocok pertama dikembalikan. Kita juga dapat menambahkan item tanpa nama sebagai argumen terakhir fungsi switch() yang akan menjadi opsi default jika tidak ada kecocokan. Jika opsi default ini tidak ditetapkan, dan tidak ada kecocokan, fungsi mengembalikan NULL.
Fungsi switch() adalah alternatif efisien dari rangkaian if-else yang panjang karena membuat kode kurang repetitif dan lebih mudah dibaca. Biasanya, fungsi ini digunakan untuk mengevaluasi satu ekspresi. Kita tetap dapat menulis konstruksi switch bertingkat yang lebih kompleks untuk mengevaluasi beberapa ekspresi. Namun, dalam bentuk ini, fungsi switch() cepat menjadi sulit dibaca dan kehilangan keunggulan utamanya dibandingkan konstruksi if-else.
Meskipun semua fungsi ini memungkinkan iterasi atas struktur data tanpa menggunakan loop dan melakukan operasi yang sama pada setiap elemennya, mereka berbeda dalam jenis masukan dan keluaran serta fungsi yang dijalankan.
apply()—menerima data frame, matriks, atau array dan mengembalikan vektor, daftar, matriks, atau array. Fungsi ini dapat diterapkan per baris, per kolom, atau keduanya.
lapply()—menerima vektor, daftar, atau data frame dan selalu mengembalikan daftar. Untuk masukan berupa data frame, fungsi ini hanya diterapkan per kolom.
sapply()—menerima vektor, daftar, atau data frame dan mengembalikan struktur data yang paling disederhanakan, yaitu vektor untuk masukan vektor, daftar untuk masukan daftar, dan matriks untuk masukan data frame.
tapply()—menghitung statistik ringkasan untuk berbagai factor (yaitu data kategorikal).
Ada tiga kelompok pernyataan kendali di R: pernyataan kondisional, pernyataan loop, dan pernyataan loncatan.
Pernyataan kondisional:
if—menguji apakah kondisi tertentu benar dan menyediakan operasi yang dilakukan jika ya.
if-else—menguji apakah kondisi tertentu benar, menyediakan operasi jika ya dan set operasi lain jika tidak.
if... else if... else—menguji serangkaian kondisi satu per satu, menyediakan operasi untuk setiap kondisi jika benar, dan set operasi cadangan jika tidak ada kondisi yang benar.
switch—mengevaluasi sebuah ekspresi terhadap item daftar dan mengembalikan nilai dari daftar berdasarkan hasil evaluasi tersebut.
Pernyataan loop:
for—dalam for loop, melakukan iterasi atas sebuah urutan.
while—dalam while loop, memeriksa apakah kondisi logis yang ditentukan (atau beberapa kondisi) terpenuhi pada iterasi saat ini.
repeat—dalam repeat loop, terus melakukan set operasi yang sama hingga kondisi break yang ditentukan (atau beberapa kondisi) terpenuhi.
Pernyataan loncatan:
next—melewati iterasi tertentu dari suatu loop dan melompat ke iterasi berikutnya jika kondisi tertentu terpenuhi.
break—menghentikan dan keluar dari loop pada iterasi tertentu jika kondisi tertentu terpenuhi.
return—keluar dari suatu fungsi dan mengembalikan hasil.
Regular expression, atau regex, di R atau bahasa pemrograman lain, adalah karakter atau rangkaian karakter yang mendeskripsikan pola teks tertentu dan digunakan untuk menambang data teks. Di R, ada dua cara utama bekerja dengan regular expression:
grep(), regexpr(), gsub(), regmatches(), dll.) untuk mencari, mencocokkan, mengekstrak, dan mengganti regex.Panduan Regular Expressions di R memberikan detail lebih lanjut tentang cara bekerja dengan regex di R.
Mari pertimbangkan tiga pendekatan berbeda dan cara mengimplementasikannya di paket caret.
Kita perlu membuat matriks korelasi dari semua fitur lalu mengidentifikasi fitur yang sangat berkorelasi, biasanya yang memiliki koefisien korelasi lebih dari 0,75:
corr_matrix <- cor(features)
highly_correlated <- findCorrelation(corr_matrix, cutoff=0.75)
print(highly_correlated)
Kita perlu membuat skema pelatihan untuk mengendalikan parameter bagi train, menggunakannya untuk membangun model yang dipilih, lalu memperkirakan importance variabel untuk model tersebut:
control <- trainControl(method="repeatedcv", number=10, repeats=5)
model <- train(response_variable~., data=df, method="lvq", preProcess="scale", trControl=control)
importance <- varImp(model)
print(importance)
Salah satu metode paling populer yang disediakan caret untuk secara otomatis memilih fitur optimal adalah algoritma seleksi mundur yang disebut Recursive Feature Elimination (RFE).
Kita perlu menghitung kendali menggunakan metode resampling yang dipilih dan daftar fungsi yang telah ditentukan, menerapkan algoritma RFE dengan meneruskan fitur, variabel target, jumlah fitur yang dipertahankan, dan kendalinya, lalu mengekstrak prediktor yang terpilih:
control <- rfeControl(functions=caretFuncs, method="cv", number=10)
results <- rfe(features, target_variable, sizes=c(1:8), rfeControl=control)
print(predictors(results))
Jika Anda perlu memperkuat keterampilan machine learning di R, berikut sumber yang solid dan komprehensif: Machine Learning Scientist with R.
Korelasi adalah ukuran kekuatan dan arah hubungan linear antara dua variabel. Nilainya berkisar dari -1 (korelasi negatif sempurna) hingga 1 (korelasi positif sempurna). Kovarians adalah ukuran sejauh mana dua variabel berubah relatif satu sama lain dan arah hubungan linear di antara keduanya. Berbeda dengan korelasi, kovarians tidak memiliki batas rentang.
Di R, untuk menghitung korelasi, kita menggunakan fungsi cor(), untuk menghitung kovarians—fungsi cov(). Sintaks kedua fungsi identik: kita meneruskan dua variabel (vektor) yang ingin dihitung ukurannya (mis., cor(vector_1, vector_2) atau cov(vector_1, vector_2)), atau seluruh data frame, jika ingin menghitung korelasi atau kovarians antar semua variabel dalam data frame tersebut (mis., cor(df) or cov(df)). Untuk dua vektor, hasilnya berupa satu nilai, untuk data frame, hasilnya berupa matriks korelasi (atau kovarians).
Di bawah ini beberapa pendekatan dan cara mengimplementasikannya di paket caret R.
createDataPartition() dan menetapkan parameter p ke proporsi data yang diperlukan untuk pelatihan.method dari fungsi trainControl() ke "boot" saat mendefinisikan pengendali pelatihan model.Untuk mengimplementasikan metode cross-validation ini di R, kita perlu menetapkan parameter method dari fungsi trainControl() masing-masing ke "cv", "repeatedcv", atau "LOOCV" saat mendefinisikan pengendali pelatihan model.
Uji hipotesis statistik chi-kuadrat adalah teknik yang digunakan untuk menentukan apakah dua variabel kategorikal saling independen atau terdapat korelasi di antara keduanya. Untuk melakukan uji chi-kuadrat di R, kita perlu menggunakan fungsi chisq.test() dari paket stats. Langkah-langkahnya sebagai berikut:
1. Buat tabel kontingensi dengan variabel kategorikal yang diminati menggunakan fungsi table() dari base R:
table = table(df["var_1"], df["var_2"])
2. Teruskan tabel kontingensi ke fungsi chisq.test():
chisq.test(table)
Anda dapat menyegarkan kembali pengetahuan tentang uji chi-kuadrat dan uji hipotesis lainnya di kursus Hypothesis Testing in R kami.
Shiny adalah paket R sumber terbuka yang memungkinkan pembuatan aplikasi web dan halaman web interaktif sepenuhnya untuk data science dengan mudah dan cepat hanya menggunakan R, tanpa pengetahuan HTML, CSS, atau JavaScript. Shiny di R menawarkan banyak fitur dasar dan lanjutan, widget, tata letak, contoh aplikasi web, serta kode dasarnya untuk dikembangkan dan disesuaikan, serta pameran pengguna dari berbagai bidang (teknologi, olahraga, perbankan, pendidikan, dll.) yang dikumpulkan dan dikategorikan oleh komunitas pengembang aplikasi Shiny.
Fungsi with() mengevaluasi sebuah ekspresi R pada satu atau lebih variabel dari data frame dan mengeluarkan hasilnya tanpa memodifikasi data frame. Fungsi within() mengevaluasi sebuah ekspresi R pada satu atau lebih variabel dari data frame, memodifikasi data frame, dan mengeluarkan hasilnya. Di bawah ini kita dapat melihat bagaimana fungsi-fungsi ini bekerja menggunakan contoh data frame sampel:
df <- data.frame(a = c(1, 2, 3), b = c(10, 20, 30))
print(df)
with(df, a * b)
print(within(df, c <- a * b))
Keluaran:
a b
1 1 10
2 2 20
3 3 30
10 40 90
a b c
1 1 10 10
2 2 20 40
3 3 30 90
Saat menggunakan fungsi within(), untuk menyimpan modifikasi, kita perlu menetapkan keluaran fungsi ke sebuah variabel.
Sebagai penutup, dalam artikel ini kita membahas 40 pertanyaan wawancara pemrograman R yang paling umum dan jawaban yang diharapkan untuk masing-masing. Semoga, dengan informasi ini, Anda merasa lebih percaya diri dan siap untuk wawancara R yang sukses, baik Anda sedang mencari pekerjaan di bidang R maupun kandidat yang tepat untuk posisi terbuka di perusahaan Anda.
Untuk mendapatkan pengalaman langsung menjawab pertanyaan, lihat kursus kami Latihan Pertanyaan Wawancara Statistik di R.
IBM Certified Data Scientist (2020), sebelumnya Ahli Geologi/Geomodeler Perminyakan untuk ladang minyak dan gas di seluruh dunia dengan pengalaman kerja internasional lebih dari 12 tahun. Mahir dalam Python, R, dan SQL. Bidang keahlian: pembersihan data, manipulasi data, visualisasi data, analisis data, pemodelan data, statistik, storytelling, machine learning. Berpengalaman luas dalam mengelola komunitas data science serta menulis/meninjau artikel dan tutorial tentang data science dan topik karier.
Mulai Perjalanan R Anda Hari Ini!
Program
Program
Kursus
blogs
Dario Radečić
15 mnt
blogs
David Woods
13 mnt

blogs
Javier Canales Luna
14 mnt
blogs
Hugo Bowne-Anderson
13 mnt