R merupakan bahasa pemrograman yang dapat digunakan untuk melakukan pengolahan dan analisis data statistik. Salah satu kemampuan dasar dalam R adalah penggunaan function atau fungsi. Fungsi merupakan sekumpulan perintah yang disusun untuk menjalankan tugas tertentu. Dengan menggunakan fungsi, proses pengolahan data dapat dilakukan secara lebih terstruktur, ringkas, dan dapat digunakan kembali.
Pada praktikum ini, konsep basic function diterapkan pada dua permasalahan. Permasalahan pertama adalah mengolah data penjualan semangka selama tujuh hari menggunakan fungsi statistik dan fungsi buatan pengguna (user-defined function). Permasalahan kedua adalah membuat fungsi matematika untuk menentukan akar-akar persamaan kuadrat menggunakan rumus kuadrat.
Penggunaan fungsi statistik seperti min(),
max(), sum(), mean(),
median(), var(), dan sd()
membantu memperoleh ringkasan data. Sementara itu, fungsi yang dibuat
sendiri memungkinkan beberapa perintah digabungkan menjadi satu proses
yang dapat dipanggil kembali dengan argumen tertentu.
Praktikum ini diharapkan dapat meningkatkan pemahaman mengenai penggunaan fungsi dasar pada R, melatih penyusunan perintah secara sistematis, serta membantu praktikan menginterpretasikan hasil pengolahan data dan perhitungan matematika.
R merupakan bahasa pemrograman dan lingkungan komputasi yang banyak digunakan untuk pengolahan data, analisis statistik, dan visualisasi. Perintah dalam R dapat dijalankan secara langsung maupun disusun ke dalam fungsi agar dapat digunakan kembali.
Function adalah sekumpulan instruksi yang diberi nama dan dapat dipanggil untuk melakukan suatu pekerjaan. Fungsi dapat menerima masukan berupa argumen dan menghasilkan keluaran. Dalam R, fungsi buatan pengguna umumnya ditulis menggunakan bentuk:
nama_fungsi <- function(argumen) {
# perintah yang dijalankan
return(hasil)
}
Beberapa fungsi statistik dasar yang digunakan dalam praktikum ini adalah:
| Fungsi | Kegunaan |
|---|---|
length(x) |
Menghitung banyaknya elemen data |
min(x) |
Menentukan nilai terkecil |
max(x) |
Menentukan nilai terbesar |
sum(x) |
Menghitung jumlah seluruh elemen |
mean(x) |
Menghitung rata-rata |
median(x) |
Menentukan nilai tengah |
sort(x) |
Mengurutkan data |
var(x) |
Menghitung varians sampel |
sd(x) |
Menghitung simpangan baku sampel |
summary(x) |
Menampilkan ringkasan statistik |
Persamaan kuadrat mempunyai bentuk umum:
\[ ax^2 + bx + c = 0,\quad a \ne 0 \]
Akar-akar persamaan kuadrat dapat ditentukan menggunakan diskriminan:
\[ D = b^2 - 4ac \]
Kemudian akar-akar persamaan dihitung dengan rumus:
\[ x_1 = \frac{-b+\sqrt{D}}{2a},\qquad x_2 = \frac{-b-\sqrt{D}}{2a} \]
Jika \(D > 0\), terdapat dua akar real berbeda. Jika \(D = 0\), terdapat satu akar real kembar. Jika \(D < 0\), akar-akarnya merupakan bilangan kompleks.
Data yang digunakan adalah data penjualan semangka selama satu minggu sebagaimana tercantum dalam contoh materi praktikum. Data terdiri atas tujuh pengamatan, mulai dari hari Senin hingga Minggu. Data ini digunakan sebagai contoh penerapan fungsi, bukan sebagai hasil survei lapangan baru.
Variabel yang diamati adalah jumlah penjualan semangka per hari, dengan satuan buah.
| Hari | Jumlah penjualan (buah) |
|---|---|
| Senin | 120 |
| Selasa | 115 |
| Rabu | 100 |
| Kamis | 120 |
| Jumat | 118 |
| Sabtu | 135 |
| Minggu | 178 |
Analisis dilakukan melalui tahapan berikut:
Data penjualan dimasukkan ke dalam vektor
data_penjualan. Batas penjualan ditentukan berdasarkan 110
ditambah dua digit terakhir NPM, yaitu 54. Dengan demikian, batas yang
digunakan adalah 164 buah.
hari <- c("Senin", "Selasa", "Rabu", "Kamis",
"Jumat", "Sabtu", "Minggu")
data_penjualan <- c(120, 115, 100, 120, 118, 135, 178)
batas_penjualan <- 110 + 54
data_penjualan
## [1] 120 115 100 120 118 135 178
batas_penjualan
## [1] 164
Fungsi berikut digunakan untuk menghitung penjualan terendah, tertinggi, total, rata-rata, urutan penjualan, dan jumlah hari dengan penjualan di bawah batas.
analisis_penjualan <- function(data, batas) {
hasil <- list(
jumlah_hari = length(data),
penjualan_terendah = min(data),
penjualan_tertinggi = max(data),
total_penjualan = sum(data),
rata_rata = mean(data),
urutan_penjualan = sort(data),
hari_di_bawah_batas = sum(data < batas)
)
return(hasil)
}
hasil_penjualan <- analisis_penjualan(
data_penjualan,
batas_penjualan
)
hasil_penjualan
## $jumlah_hari
## [1] 7
##
## $penjualan_terendah
## [1] 100
##
## $penjualan_tertinggi
## [1] 178
##
## $total_penjualan
## [1] 886
##
## $rata_rata
## [1] 126.5714
##
## $urutan_penjualan
## [1] 100 115 118 120 120 135 178
##
## $hari_di_bawah_batas
## [1] 6
tabel_statistik <- data.frame(
Ukuran = c("Jumlah pengamatan", "Minimum", "Maksimum",
"Range", "Total", "Mean", "Median",
"Varians", "Standar deviasi"),
Nilai = c(
length(data_penjualan),
min(data_penjualan),
max(data_penjualan),
max(data_penjualan) - min(data_penjualan),
sum(data_penjualan),
mean(data_penjualan),
median(data_penjualan),
var(data_penjualan),
sd(data_penjualan)
)
)
knitr::kable(
tabel_statistik,
digits = 3,
caption = "Hasil Statistik Deskriptif Penjualan Semangka"
)
| Ukuran | Nilai |
|---|---|
| Jumlah pengamatan | 7.000 |
| Minimum | 100.000 |
| Maksimum | 178.000 |
| Range | 78.000 |
| Total | 886.000 |
| Mean | 126.571 |
| Median | 120.000 |
| Varians | 619.286 |
| Standar deviasi | 24.885 |
Berdasarkan hasil perhitungan, terdapat tujuh data penjualan. Penjualan terendah adalah 100 buah dan tertinggi adalah 178 buah, sehingga range atau selisih keduanya sebesar 78 buah. Total penjualan selama tujuh hari adalah 886 buah. Rata-rata penjualan sebesar 126,57 buah per hari, sedangkan median sebesar 120 buah. Varians sampel sebesar 619,29 dan standar deviasi sampel sekitar 24,89 buah.
cat("Batas penjualan:", batas_penjualan, "buah\n")
## Batas penjualan: 164 buah
cat("Jumlah hari di bawah batas:",
hasil_penjualan$hari_di_bawah_batas, "hari\n")
## Jumlah hari di bawah batas: 6 hari
cat("Urutan penjualan:",
paste(hasil_penjualan$urutan_penjualan, collapse = ", "))
## Urutan penjualan: 100, 115, 118, 120, 120, 135, 178
Batas penjualan yang digunakan adalah 164 buah. Berdasarkan data, terdapat enam hari dengan penjualan kurang dari 164 buah. Satu hari lainnya memiliki penjualan 178 buah, yaitu lebih besar daripada batas tersebut.
tabel_penjualan <- data.frame(
Hari = hari,
Penjualan = data_penjualan,
Keterangan = ifelse(data_penjualan < batas_penjualan,
"Di bawah batas", "Di atas batas")
)
knitr::kable(
tabel_penjualan,
caption = "Data Penjualan Semangka dan Perbandingan dengan Batas"
)
| Hari | Penjualan | Keterangan |
|---|---|---|
| Senin | 120 | Di bawah batas |
| Selasa | 115 | Di bawah batas |
| Rabu | 100 | Di bawah batas |
| Kamis | 120 | Di bawah batas |
| Jumat | 118 | Di bawah batas |
| Sabtu | 135 | Di bawah batas |
| Minggu | 178 | Di atas batas |
barplot(
data_penjualan,
names.arg = hari,
col = "skyblue",
main = "Grafik Penjualan Semangka Selama Tujuh Hari",
xlab = "Hari",
ylab = "Jumlah penjualan (buah)",
ylim = c(0, 200)
)
abline(h = batas_penjualan, col = "red",
lty = 2, lwd = 2)
legend(
"topleft",
legend = paste("Batas =", batas_penjualan, "buah"),
col = "red",
lty = 2,
lwd = 2,
bty = "n"
)
Grafik menunjukkan bahwa penjualan tertinggi terjadi pada hari Minggu sebanyak 178 buah, sedangkan penjualan terendah terjadi pada hari Rabu sebanyak 100 buah. Garis merah putus-putus menunjukkan batas 164 buah. Enam batang berada di bawah garis batas dan satu batang, yaitu hari Minggu, berada di atasnya.
Fungsi berikut menerima tiga argumen, yaitu koefisien \(a\), \(b\), dan \(c\). Fungsi menghitung diskriminan dan menentukan akar persamaan kuadrat.
akar_kuadrat <- function(a, b, c) {
if (a == 0) {
stop("Koefisien a tidak boleh sama dengan 0.")
}
D <- b^2 - 4*a*c
if (D > 0) {
x1 <- (-b + sqrt(D)) / (2*a)
x2 <- (-b - sqrt(D)) / (2*a)
} else if (D == 0) {
x1 <- -b / (2*a)
x2 <- x1
} else {
bagian_real <- -b / (2*a)
bagian_imajiner <- sqrt(abs(D)) / (2*abs(a))
x1 <- complex(real = bagian_real,
imaginary = bagian_imajiner)
x2 <- complex(real = bagian_real,
imaginary = -bagian_imajiner)
}
return(list(
koefisien = c(a = a, b = b, c = c),
diskriminan = D,
akar_1 = x1,
akar_2 = x2
))
}
Persamaan yang digunakan adalah:
\[ x^2 - 5x + 6 = 0 \]
Dengan demikian, koefisiennya adalah \(a=1\), \(b=-5\), dan \(c=6\).
hasil_akar <- akar_kuadrat(a = 1, b = -5, c = 6)
hasil_akar
## $koefisien
## a b c
## 1 -5 6
##
## $diskriminan
## [1] 1
##
## $akar_1
## [1] 3
##
## $akar_2
## [1] 2
Diskriminan yang diperoleh adalah:
\[ D=(-5)^2-4(1)(6)=25-24=1 \]
Karena nilai diskriminan lebih besar dari nol, persamaan mempunyai dua akar real yang berbeda. Hasil perhitungan fungsi adalah \(x_1=3\) dan \(x_2=2\).
x1 <- hasil_akar$akar_1
x2 <- hasil_akar$akar_2
data.frame(
Akar = c(x1, x2),
Substitusi = c(x1^2 - 5*x1 + 6,
x2^2 - 5*x2 + 6)
)
Hasil substitusi kedua akar ke persamaan menghasilkan nilai nol. Hal ini menunjukkan bahwa akar yang diperoleh sesuai dengan persamaan kuadrat yang diberikan.
Berdasarkan praktikum penggunaan basic function pada program R, dapat disimpulkan bahwa:
Sebelum membuat fungsi pada program R, praktikan sebaiknya memahami penggunaan argumen, badan fungsi, dan nilai keluaran (return). Penulisan sintaks perlu dilakukan secara teliti agar tidak terjadi kesalahan ketika program dijalankan. Hasil keluaran juga perlu diperiksa kembali agar interpretasi sesuai dengan data dan perhitungan.
Fadhli, M. R. (2021). Dasar-dasar Bahasa Pemrograman R. Bandung: Institut Teknologi Bandung.
Novianti. (2026). Modul Praktikum Komputasi Statistika. Bengkulu: Laboratorium Matematika, Fakultas Matematika dan Ilmu Pengetahuan Alam, Universitas Bengkulu.
Nurdiansyah, D., & Sulistiawan, A. (2023). Dasar Pemrograman Komputer dengan Open Source Software R (Untuk Bidang Sains dan Teknologi). Bojonegoro: Universitas Nahdlatul Ulama Sunan Giri.
Zulfikar, Susanti, A., & Munawarah. (2022). Statistical Computing dengan Program R: Untuk Riset Sains Terapan. Fakultas Pertanian, Universitas KH. A. Wahab Hasbullah.