Lewati ke konten utama

Tutorial Utilities di R

Pelajari beberapa fungsi berguna untuk manipulasi struktur data, nested-list, regular expression, serta bekerja dengan waktu dan tanggal dalam bahasa pemrograman R.
Diperbarui 29 Sep 2026  · 14 mnt Baca

Jelajahi bersama AI

ChatGPTClaudePerplexity

Dalam tutorial ini, Anda akan mempelajari beberapa fungsi dan utilitas yang mudah dan sering digunakan dalam bahasa pemrograman R. Pertama, kita akan membahas beberapa fungsi terkait matematika. Lalu Anda akan melihat fungsi yang lebih terkait dengan struktur data R seperti memanipulasi nested-list, regular expression, waktu, dan tanggal.

Fungsi Matematika

Mari lihat sel kode berikut yang menggunakan beberapa fungsi matematika.

Anda akan terlebih dahulu mendefinisikan dua vektor, yaitu x dan y yang terdiri dari nilai positif dan negatif.

x <- c(1.1, -2.3, -4.5)
y <- c(2.4,-44, -2.2)
print(x)
[1]  1.1 -2.3 -4.5
print(y)
[1]   2.4 -44.0  -2.2

Mari ambil kedua vektor x dan y ini:

  • Ambil nilai absolutnya,
  • Bulatkan ke nol tempat desimal,
  • Jumlahkan masing-masing dan
  • Terakhir, ambil rata-ratanya.
mean(c(sum(round(abs(x))),sum(round(abs(y)))))
27.5

Bagaimana jika Anda memecah baris kode di atas menjadi bagian-bagian kecil dan melihat lebih rinci tiap fungsinya.

  • Fungsi abs() cukup mengambil nilai positif atau nilai absolut dari elemen-elemen vektor x dan y.

Misalnya, saat menerapkan fungsi abs() pada x dan y, Anda akan mengharapkan semua nilai positif, seperti di bawah ini.

abs(x)
  1. 1.1
  2. 2.3
  3. 4.5
abs(y)
  1. 2.4
  2. 44
  3. 2.2
  • Fungsi berikutnya dalam daftar adalah fungsi round(). Fungsinya hanya membulatkan input. Fungsi ini menerima argumen tambahan, di mana Anda dapat menentukan berapa banyak tempat desimal yang ingin dibulatkan. Secara umum, fungsi round() membulatkan input ke nol tempat desimal.

Contohnya, setelah Anda menerapkan fungsi round() pada vektor x dan y, keluarannya akan terlihat seperti di bawah ini:

round(x)
  1. 1
  2. -2
  3. -4
round(y)
  1. 2
  2. -44
  3. -2
  • Sementara fungsi sum() akan menghitung jumlah elemen vektor atau matriks. Misalnya, jika Anda memberikan vektor baris sebagai argumen ke fungsi sum, jumlah semua elemen vektor baris akan dikembalikan sebagai skalar.

Dalam hal ini, vektor x dan y diberikan ke fungsi sum(). Maka, R cukup menghitung jumlah elemen vektor dan mengembalikan skalar sebagai output.

sum(abs(round(x)))
7
sum(abs(round(y)))
 48
  • Terakhir, fungsi mean() atau average() akan menghitung rata-rata aritmetika. Fungsi ini akan mengambil rata-rata dari sekumpulan nilai numerik, menjumlahkannya, lalu membaginya dengan jumlah elemen dalam himpunan tersebut.

Dalam kasus ini, input ke fungsi mean() adalah vektor baris dengan panjang dua berisi angka 7 dan 48. Jadi, mean dari kedua nilai ini adalah jumlah keduanya dibagi jumlah elemennya, yaitu 2.

mean(c(7,48))
27.5

Masih cukup mudah, bukan?

Sekarang mari beralih ke segmen berikutnya yang paling menarik dari tutorial ini!

Fungsi untuk Struktur Data

Sekarang mari lihat beberapa struktur data seperti list dan vektor. Berbagai cara untuk mengoperasikan struktur data list, membalik urutan sebuah list, serta bagaimana Anda dapat mengonversi list ke vektor dan sebaliknya.

Fungsi di bawah ini adalah list(), atau bisa disebut list of lists, juga dikenal sebagai nested-list. Fungsi ini membuat list elemen yang dapat terdiri dari nilai logis, nilai numerik, dan string.

Pada contoh di bawah, ada tiga list di dalam sebuah list, yaitu log, ch, dan int_vec. Masing-masing memiliki tipe data atau objek R berupa logis, numerik, dan string/karakter.

list_define <- list(log = TRUE, ch = "hello_datacamp", int_vec = sort(rep(seq(8,2, by = -2), times = 2)))
list_define
$log
TRUE
$ch
'hello_datacamp'
$int_vec
  1. 2
  2. 2
  3. 4
  4. 4
  5. 6
  6. 6
  7. 8
  8. 8
  • log hanyalah operator logis, TRUE atau FALSE
  • ch adalah string karakter hello_datacamp
  • int_vec adalah urutan nilai numerik.

Karena log dan ch cukup jelas, mari lihat lebih dekat int_vec.

int_vec = sort(rep(seq(8,2, by = -2), times = 2))
int_vec
  1. 2
  2. 2
  3. 4
  4. 4
  5. 6
  6. 6
  7. 8
  8. 8

Mari pahami ekspresi di atas langkah demi langkah.

Fungsi seq menghasilkan urutan angka secara menurun dari 8 hingga 2.

Sintaks fungsi seq() diberikan sebagai: seq(x1,x2, by = y)

Dua argumen pertama x1 dan x2 memberi tahu R rentang urutan, yaitu dari mana mulai dan di mana mengakhiri urutan. Argumen by menentukan besaran kenaikan atau penurunan urutan pada tiap interval.

Misalnya, baris kode di bawah ini akan menghasilkan urutan dari 100 hingga 200 dengan langkah kenaikan 20.

seq(100,200, by = 20)
  1. 100
  2. 120
  3. 140
  4. 160
  5. 180
  6. 200

Pada contoh kita, fungsi sequence akan menghasilkan urutan dari 8 sampai 2 (inklusif) dengan langkah penurunan 2, yang mengembalikan vektor dengan panjang 4.

a = seq(8,2, by = -2)
a
  1. 8
  2. 6
  3. 4
  4. 2

Sekarang mari pahami fungsi rep.

Fungsi ini dapat mengulang argumen input, yang biasanya vektor atau list, menggunakan argumen times, yang menerima bilangan bulat dan mengulang sebanyak itu melalui input atau urutan. Fungsi rep menerima dua argumen: input dan berapa kali Anda ingin mengulang atau mereplikasi input.

Menerapkan fungsi rep pada contoh kita, yaitu vektor dengan panjang 4 menghasilkan vektor keluaran dengan panjang 8.

b = rep(a, times = 2)

Jika Anda ingin setiap elemen dari vektor atau list diulang alih-alih seluruh vektor, ada alternatif untuk times, yaitu menggunakan argumen each.

Perbedaan nyata antara menggunakan times dan each adalah pola kemunculan setiap elemen tidak sama.

rep(a, each = 2)
  1. 8
  2. 8
  3. 6
  4. 6
  5. 4
  6. 4
  7. 2
  8. 2

Terakhir, fungsi sort(). Ini adalah fungsi generik yang jelas untuk mengurutkan banyak struktur data seperti vektor atau list. Tidak terbatas pada nilai numerik saja, tetapi juga dapat digunakan pada nilai logis dan karakter. Secara default, fungsi ini mengurutkan elemen secara menaik.

Mari masukkan keluaran dari fungsi rep ke fungsi sort untuk mendapatkan keluaran akhir.

sort(b)
  1. 2
  2. 2
  3. 4
  4. 4
  5. 6
  6. 6
  7. 8
  8. 8

Hebat! Jadi Anda berhasil memecahkan ekspresi panjang int_vec, yang berada di dalam list list_define dengan cara yang mudah.

Selanjutnya, mari cari tahu isi dari list list_define yang untuk itu Anda akan menggunakan fungsi str(). Fungsi str() di R memungkinkan Anda menampilkan struktur objek R.

str(list_define)
List of 3
 $ log    : logi TRUE
 $ ch     : chr "hello_datacamp"
 $ int_vec: num [1:8] 2 2 4 4 6 6 8 8

Mari lihat beberapa ekspresi R yang menarik:

  • Fungsi is dapat digunakan untuk memeriksa tipe struktur data Anda, yang mengembalikan nilai logis dan berguna saat menangani pernyataan kondisional.
is.list(list_define) #mengembalikan true jika argumen yang diberikan adalah list.
TRUE

Sementara itu, akan mengembalikan FALSE jika sebuah vektor, yang bukan list, diberikan seperti terlihat pada sel di bawah.

is.list(c(1,2,3)) #mengembalikan false karena Anda memberikan vektor.
FALSE
  • Mengonversi vektor ke list sangat mudah di R. Yang perlu Anda lakukan hanyalah menggunakan fungsi as diikuti .list(), dan berikan vektor sebagai argumen. Itu saja untuk mengonversi vektor menjadi list.
vec_to_list <- as.list(c(1,2,3))
is.list(vec_to_list) #verifikasi dengan is.list()
TRUE
  • Di sisi lain, sebuah list dapat diurai menjadi vektor dengan menggunakan fungsi unlist. R melakukan konversi ini dengan meratakan seluruh struktur list dan akhirnya menghasilkan satu vektor.
list_to_vec <- unlist(vec_to_list)
list_to_vec
  1. 1
  2. 2
  3. 3

Mirip dengan is.list(), Anda dapat menggunakan is.vector() untuk mengetahui apakah argumen yang diberikan merupakan vektor atau bukan.

is.vector(list_to_vec)
TRUE

Mari konversi list besar list_define menjadi vektor. Poin penting di sini adalah vektor hanya dapat berisi satu tipe data atau objek R. Maka, baik nilai logical maupun numerical akan dikonversi menjadi string.

unlist(list_define)
log
'TRUE'
ch
'hello_datacamp'
int_vec1
'2'
int_vec2
'2'
int_vec3
'4'
int_vec4
'4'
int_vec5
'6'
int_vec6
'6'
int_vec7
'8'
int_vec8
'8'

Sebelum beralih ke topik berikutnya, mari lihat fungsi append() dan rev().

  • Sesuai namanya, fungsi append() memungkinkan Anda menambahkan dua atau lebih vektor atau list ke vektor atau list yang sudah ada atau yang baru.

Mari coba fungsi append() pada list list_define. Anda akan melihat bahwa list sekarang terdiri dari 6 elemen alih-alih 3 karena Anda menambahkan list yang sama ke dirinya sendiri.

str(append(list_define, list_define))
List of 6
 $ log    : logi TRUE
 $ ch     : chr "hello_datacamp"
 $ int_vec: num [1:8] 2 2 4 4 6 6 8 8
 $ log    : logi TRUE
 $ ch     : chr "hello_datacamp"
 $ int_vec: num [1:8] 2 2 4 4 6 6 8 8
  • Terakhir, mari balik atau ubah urutan list list_define dengan bantuan fungsi rev() di R.
str(rev(list_define))
List of 3
 $ int_vec: num [1:8] 2 2 4 4 6 6 8 8
 $ ch     : chr "hello_datacamp"
 $ log    : logi TRUE

Regular Expression

Banyak orang menganggap regular expression sebagai topik yang kompleks untuk dipelajari. Namun, ini adalah topik penting tidak hanya di R tetapi juga di berbagai bahasa pemrograman seperti Python. Banyak bahasa pemrograman, termasuk R, menyediakan kemampuan regular expression bawaan.

Regular expression dapat digunakan di begitu banyak aplikasi, dan sangat berguna terutama saat Anda ingin melakukan prapemrosesan data teks. Ini digunakan dalam berbagai masalah Natural Language Processing (NLP).

Regular expression juga digunakan dalam mesin pencari kueri dan editor teks.

Regular expression, juga dikenal sebagai regex atau regexp atau rational operators, adalah urutan karakter yang mendefinisikan pola pencarian. Umumnya, pola pencarian ini digunakan oleh berbagai algoritma pencarian string untuk menemukan pola atau mencari dan mengganti pola atau memfilter pola yang cocok.

Mari mulai topik ini dengan memahami penggunaan fungsi grep() dan grepl().

Demi kesederhanaan, mari definisikan vektor baris animals_regex dengan panjang 5 yang akan Anda gunakan untuk menerapkan pola regex.

animals_regex <- c('cat','dog','cheetah','lion','mice')

Pertama, mari pahami fungsi grepl(). Fungsi grepl() mengembalikan keluaran logis yang berarti jika string cocok dengan pola, maka mengembalikan TRUE, jika tidak FALSE.

Di bawah ini adalah sintaks yang sederhana dan intuitif dari fungsi grepl() di mana argumen pertama adalah pola yang ingin Anda cocokkan sementara argumen kedua adalah string atau input dari mana Anda ingin menemukan atau memfilter pola. Anda dapat mengabaikan argumen lainnya untuk saat ini. grepl(pattern, x, ignore.case = FALSE, perl = FALSE, fixed = FALSE, useBytes = FALSE) Mari cari tahu hewan mana dari kelima hewan di atas yang memiliki c di dalamnya dengan bantuan fungsi grepl().

Dalam kasus ini, Anda mencari hewan yang memiliki c di dalamnya, yang berarti polanya tidak lain adalah c itu sendiri.

grepl(pattern = 'c', x = animals_regex)
  1. TRUE
  2. FALSE
  3. TRUE
  4. FALSE
  5. TRUE

Dari keluaran di atas, Anda dapat melihat bahwa, karena ada c pada cat, cheetah, dan mice, maka TRUE dikembalikan untuk indeks-indeks tersebut pada vektor animals_regex, sementara FALSE dikembalikan untuk yang tidak cocok dengan pola c.

Mari cari elemen yang dimulai dengan c dan bukan sekadar memiliki karakter c dalam namanya.

Untuk mencapai ini, yang perlu Anda lakukan adalah menggunakan tanda $^$ (caret) di awal pola yang ingin Anda cari.

grepl(pattern = '^c', x = animals_regex) #hanya cat dan cheetah yang diawali `c`.
  1. TRUE
  2. FALSE
  3. TRUE
  4. FALSE
  5. FALSE

Jadi dari keluaran di atas, Anda dapat melihat bahwa karena hanya cat dan cheetah yang diawali dengan c, maka hanya posisi-posisi itu yang dikembalikan sebagai TRUE.

Mirip dengan tanda $^$, tanda $ dapat digunakan di akhir pola yang ingin Anda cari untuk mencocokkan elemen yang berakhir dengan pola tertentu. Untuk mencari hewan yang berakhir dengan n, Anda cukup menggunakan n diikuti dengan tanda $.

grepl(pattern = 'n$', x = animals_regex) #hanya lion yang berakhir dengan `n`.
  1. FALSE
  2. FALSE
  3. FALSE
  4. TRUE
  5. FALSE

Catatan: Untuk mempelajari lebih lanjut tentang regular expression, cukup ketik ?regex di sel kode jupyter notebook dan dokumentasi tentang regex akan muncul. Juga, jika Anda ingin belajar lebih lanjut tentang regular expression, Anda bisa melihat sumber ini, yang menyediakan alat untuk merancang pola pencarian dan kemudian mengujinya pada string input Anda.

  • Mirip dengan fungsi grepl(), ada fungsi grep(), yang alih-alih keluaran logis, mengembalikan indeks vektor/matriks yang cocok dengan pola yang diberikan.

Sintaks fungsi grep() persis sama dengan fungsi grepl() dan diberikan sebagai: grep(pattern, x, ignore.case = FALSE, perl = FALSE, value = FALSE, fixed = FALSE, useBytes = FALSE, invert = FALSE) Mari ambil contoh yang sama seperti di atas tetapi kali ini terapkan fungsi grep() padanya!

grep(pattern = 'c', x = animals_regex)
  1. 1
  2. 3
  3. 5

Sesuai yang Anda harapkan, keluaran di atas mengembalikan indeks elemen cat, cheetah, dan mice, bukan TRUE/FALSE. Dan kurang lebih itu saja!

Mari gunakan fungsi which untuk membandingkan fungsi grep() dan grepl(). Fungsi which() cukup mengembalikan indeks vektor untuk indeks TRUE dari objek logis.

Sekarang jika Anda menghubungkan keterangannya, Anda akan paham bahwa karena fungsi grepl() memiliki kemampuan mengembalikan objek logis, objek tersebut akan langsung diberikan ke fungsi which() yang kemudian akan mengonversi keluaran serupa dengan yang Anda harapkan dari fungsi grep().

which(grepl(pattern = 'c', x = animals_regex))
  1. 1
  2. 3
  3. 5

Mirip dengan fungsi grepl(), fungsi grep() juga dapat menangani berbagai jenis pola regular expression.

Jika Anda menerapkan fungsi grep() untuk mencari elemen dalam vektor animals_regex yang berakhir dengan n, Anda akan mengharapkan keluaran 4 karena hanya lion yang berakhir dengan n seperti di bawah ini.

grep(pattern = 'n$', x = animals_regex)
4

Kerja bagus!

Anda telah mempelajari dasar-dasar regular expression seperti bagaimana Anda dapat memfilter elemen dari vektor yang cocok dengan pola tertentu. Namun, R tidak terbatas pada pencocokan pola saja. R memiliki banyak fungsi, dan salah satunya adalah fungsi sub().

Fungsi sub(), alih-alih memfilter pola yang cocok, mengganti kecocokan tersebut dengan string lain. Mari pahami lebih dalam!

  • Fungsi sub() terutama menerima tiga argumen sebagai input yaitu:
    • pattern yang ingin Anda cocokkan atau regular expression,
    • nilai replacement yang akan ditempatkan pada elemen vektor yang cocok, dan
    • x string vektor input tempat Anda akan menerapkan regex.

Sintaksnya diberikan sebagai: sub(pattern, replacement, x, ignore.case = FALSE, perl = FALSE,fixed = FALSE, useBytes = FALSE) Kali ini juga mari ambil contoh yang sama seperti di atas untuk memahami fungsinya!

sub(pattern = 'c', replacement = 'a', x = animals_regex)
  1. 'aat'
  2. 'dog'
  3. 'aheetah'
  4. 'lion'
  5. 'miae'

Dari keluaran di atas, Anda dapat melihat bahwa string cat menjadi aat, string cheetah menjadi aheetah, dan string mice menjadi miae. Untuk elemen-elemen ini, polanya berhasil dicocokkan.

Perhatikan juga bahwa sub() hanya mencari kecocokan pertama dalam string, yang berarti jika ada dua c dalam sebuah string, hanya kemunculan pertama c yang akan diganti dengan a sementara yang kedua tetap tidak berubah.

Jika Anda tetap ingin mengganti setiap kecocokan pola dalam string vektor, lebih baik gunakan fungsi gsub(), yang di luar cakupan tutorial ini!

Sebelum melanjutkan ke topik berikutnya, mari coba satu ekspresi menarik lagi.

Kali ini Anda akan menggunakan operator | (atau) yang akan mencoba mencocokkan salah satu dari pola yang didefinisikan dan jika cocok, menggantinya dengan -. Ingat, karena Anda menggunakan fungsi gsub(), fungsi ini akan mengganti setiap kecocokan pola dalam sebuah string.

gsub(pattern = 'c|d|l', replacement = '-', x = animals_regex) #hewan dengan `c`,`d`,`l` diganti dengan `-`.
  1. '-at'
  2. '-og'
  3. '-heetah'
  4. '-ion'
  5. 'mi-e'

Mari beralih ke topik terakhir tutorial hari ini, yaitu Waktu dan Tanggal!

Waktu dan Tanggal

Informasi waktu dan tanggal bisa sangat berguna dalam berbagai skenario. Misalnya, katakanlah Anda sedang mengerjakan masalah terkait Computer Vision dan ingin mencari tahu FPS (frames per second) di mana algoritme Anda berjalan. Dalam kasus seperti ini, Anda dapat menggunakan objek Time untuk mengetahui kecepatan pemrosesan algoritme computer vision Anda. Untuk masalah spesifik lainnya seperti peramalan deret waktu dan studi musiman, potensi R dapat digunakan secara maksimal.

Untuk awal, mari cetak tanggal hari ini dengan cepat menggunakan R dengan perintah sederhana Sys.Date(). Di sini Sys merujuk pada sistem, yang berarti mengembalikan perkiraan tanggal sistem.

Sys.Date()

Sederhana, bukan?

Waktu dan tanggal di R termasuk dalam objek Date, atau bisa dikatakan tipe datanya adalah Date. Hal ini dapat diverifikasi menggunakan fungsi class yang Anda pelajari dalam tutorial Data Types in R.

Serupa dengan fungsi Date, Anda memiliki fungsi time() yang mengembalikan waktu saat ini pada sistem, bahkan mengembalikan waktu dan tanggal sebagai output.

Sys.time()
[1] "2020-02-04 02:05:04 IST"

Membuat Objek Date

Anda telah mempelajari cara mendapatkan tanggal dan waktu saat ini. Sekarang mari cari tahu bagaimana Anda dapat membuat tanggal untuk hari lain dengan memberikan string sebagai argumen.

Untuk membuat objek tanggal untuk 10 Mei 1993, Anda akan menggunakan sintaks berikut:

date_may <- as.Date('1993-05-10') #mengonversi string karakter menjadi objek date
date_may

class(date_may)
'Date'

Satu poin penting yang perlu dicatat di sini adalah fungsi Date di R secara default mengharuskan Anda memasukkan tanggal dalam format YYYY-MM-DD. Jika Anda mencoba menukar tahun dengan bulan atau hari, itu akan menghasilkan error. Mari coba!

date_may <- as.Date('05-1993-10') #R mengikuti format tanggal ISO secara default
Error in charToDate(x): character string is not in a standard unambiguous format
Traceback:


1. as.Date("05-1993-10")

2. as.Date.character("05-1993-10")

3. charToDate(x)

4. stop("character string is not in a standard unambiguous format")

Tapi kabar baiknya, Anda dapat mengubah formatnya secara eksplisit dengan memberikan argumen format dan menyesuaikannya.

date_may <- as.Date('05-1993-10', format = '%m-%Y-%d')

Fungsi as.Date() akan menerima berbagai format tanggal, tetapi pada akhirnya akan mengonversinya kembali ke format tanggal ISO. Anda dapat melihatnya dengan mencetak variabel date_may.

date_may

date_may <- as.Date('05-10-1993', format = '%m-%d-%Y')
date_may

Aritmetika Date

Bukankah akan keren jika Anda dapat menerapkan operasi matematika seperti penjumlahan dan pengurangan pada objek Date di R?

Mari tambahkan 1 ke variabel date_may, dan Anda akan melihat bahwa tanggalnya menjadi satu hari setelahnya.

date_may + 1

Bagus, seperti yang Anda lihat dari keluaran di atas, menambahkan satu mengubah tanggal menjadi 11 Mei 1993 dari 10 Mei 1993. Demikian pula, Anda dapat mengurangkan satu dari tanggal.

Misalkan Anda ingin mengetahui selisih waktu antara tanggal lahir Anda dan kakak Anda.

elder_sib <- as.Date('1989-03-21')
date_may - elder_sib
Time difference of 1511 days

Kesimpulan

Selamat telah menyelesaikan tutorial ini.

Tutorial ini merupakan titik awal yang baik bagi pemula yang ingin mempelajari berbagai fungsi utilitas di R. Sebagai latihan yang bagus, Anda mungkin ingin mempelajari lebih lanjut tentang Regular Expression karena digunakan di berbagai aplikasi dan memang merupakan alat yang sangat kuat ketika berurusan dengan pembersihan atau prapemrosesan data teks.

Jangan ragu untuk mengajukan pertanyaan apa pun terkait tutorial ini di kolom komentar di bawah.

Jika Anda ingin mempelajari lebih lanjut tentang R, ikuti kursus Intermediate R dari DataCamp dan lihat tutorial kami Using Functions in R.

Topik
R
Data Science

Pelajari lebih lanjut tentang R

{count, plural, one {Kursus} other {Kursus}}

Pengantar Penulisan Fungsi di R

{hours} jam
54K
Tingkatkan keterampilan R Anda dengan belajar menulis fungsi yang efisien dan dapat digunakan kembali.
Lihat DetailRight Arrow
Mulai Kursus
Lihat SelengkapnyaRight Arrow
Terkait

{count, plural, one {blog} other {blogs}}

Tutorial Korelasi di R

Dapatkan pengenalan dasar-dasar korelasi di R: pelajari lebih lanjut tentang koefisien korelasi, matriks korelasi, plotting korelasi, dan sebagainya.
David Woods's photo

David Woods

13 mnt

{count, plural, one {blog} other {blogs}}

Spaghetti Plot dan Jalur Badai

Temukan alasan mengapa Anda sebaiknya (tidak) menggunakan spaghetti plot untuk menyampaikan ketidakpastian jalur prediksi badai serta dampaknya terhadap interpretasi.
Hugo Bowne-Anderson's photo

Hugo Bowne-Anderson

13 mnt

{count, plural, one {blog} other {blogs}}

40 Pertanyaan Wawancara DBMS Teratas di 2026

Kuasai pertanyaan wawancara basis data, dari konsep SQL dasar hingga skenario desain sistem tingkat lanjut. Panduan mendalam ini mencakup semua yang Anda perlukan untuk sukses di wawancara DBMS dan meraih peran berikutnya.
Dario Radečić's photo

Dario Radečić

15 mnt

{count, plural, one {blog} other {blogs}}

12 Alternatif ChatGPT Terbaik yang Bisa Anda Coba pada 2026

Artikel ini menyajikan daftar alternatif ChatGPT yang akan meningkatkan produktivitas Anda.
Javier Canales Luna's photo

Javier Canales Luna

14 mnt

Lihat SelengkapnyaLihat Selengkapnya