Berikut adalah beberapa mode data yang digunakan dalam objek data
numerik = 1.2e-2
is.numeric(numerik)[1] TRUE
kompleks = 1.2e6+2i
is.complex(kompleks) [1] TRUE
karakter = "IPB"
is.character(karakter)[1] TRUE
logis = T
is.logical(logis)[1] TRUE
Dalam penulisan bilangan float/ memiliki koma menggunakan tanda titik(.), misal 2,3 ditulis 2.3 . bilangan dapat dituliskan dalam notasi scientific. bilangan kompleks memiliki i yang merupakan bilangan imajiner (i=sqrt(-1)). pada mode karakter penulisan kutip harus konsisten tidak boleh "…’ (jenis kutip berbeda). logical/boolean dapat dituliskan seperti berikut T,F,TRUE,FALSE.
Vektor merupakan objek data dengan 1 dimensi yang semua anggotanya memiliki mode yang sama. Misal semua anggota vektor memiliki mode numerik atau semua anggota vektor memiliki mode karakter, tidak dapat dicampur
vektor = 1:10
vektor [1] 1 2 3 4 5 6 7 8 9 10
matriks memiliki 2 dimensi yang dapat berupa kumpulan vektor yang akan membentuk persegi panjang berukuran nxp. Semua elemen matriks memiliki mode yang sama.
matriks = matrix(1:20,ncol=4,byrow = T)
matriks [,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20
untuk mengakses elemen matriks dapat digunakan nama.matriks[baris,kolom].
matriks[4,3][1] 15
contoh di atas untuk mengambil elemen yang berada pada baris ke-4 dan kolom ke-3.
Array memiliki lebih dari 2 dimensi serta mode yang sama.
array1 = Titanic
array1, , Age = Child, Survived = No
Sex
Class Male Female
1st 0 0
2nd 0 0
3rd 35 17
Crew 0 0
, , Age = Adult, Survived = No
Sex
Class Male Female
1st 118 4
2nd 154 13
3rd 387 89
Crew 670 3
, , Age = Child, Survived = Yes
Sex
Class Male Female
1st 5 1
2nd 11 13
3rd 13 14
Crew 0 0
, , Age = Adult, Survived = Yes
Sex
Class Male Female
1st 57 140
2nd 14 80
3rd 75 76
Crew 192 20
Array1 memiliki 4 dimensi.
Faktor untuk data berskala nominal yang memiliki kelompok (levels), namun antar kelompok tidak memiliki urutan
faktor = factor(c("p","l","l","p","l"))
faktor[1] p l l p l
Levels: l p
Ordered untuk data berskala ordinal yang memiliki kelompok (levels) dan antar kelompok memiliki urutan
ordered1 = ordered(c("SD","SMP","SD","SMA","SMP"),levels=c("SD","SMP","SMA"))
ordered1[1] SD SMP SD SMA SMP
Levels: SD < SMP < SMA
List merupakan kumpulan beberapa objek yang dapat memiliki jenis yang berbeda
list1 = list(ordered1,matriks,vektor)
list1[[1]]
[1] SD SMP SD SMA SMP
Levels: SD < SMP < SMA
[[2]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[4,] 13 14 15 16
[5,] 17 18 19 20
[[3]]
[1] 1 2 3 4 5 6 7 8 9 10
untuk mengakses list dapat menggunakan nama.list[[objek]][elemen] seperti berikut
list1[[1]][3][1] SD
Levels: SD < SMP < SMA
contoh di atas untuk mengambil objek ke-1 dan elemen yang berada pada urutan ke-3.
Data frame merupakan data dalam format tabel yang semua anggota dalam 1 kolom memiliki mode yang sama sementara antar kolom boleh memiliki mode yang berbeda. setiap kolom harus memiliki jumlah yang sama (jumlah baris sama).
dataframe = data.frame(X=rep(c("A","B","C","D","E"),2),vektor)
dataframeuntuk mengakses data frame dapat menggunakan nama.dataframe$nama.kolom
dataframe$X [1] "A" "B" "C" "D" "E" "A" "B" "C"
[9] "D" "E"
if (kondisi) ekspresi (T) [else ekspresi (F)]
y=2
if(y>0) y=2*y
y[1] 4
x <- ifelse(kondisi, nilai jika T, nilai jika F)
x = 2
nilai <- ifelse(x>0, "positif", "negatif")
nilai[1] "positif"
digunakan untuk mengganti metode perhitugan sesuai dengan tipe yang dipilih.
centre <- function(x, type) {
switch(type,
mean = mean(x),
median = median(x),
trimmed = mean(x, trim = .1))
}
dt <- c(1, 2, 2, 3, 4, 4, 5, 6, 8, 9)
dt_mean <- centre(dt, "mean")
dt_median <- centre(dt, "median")
dt_trimmed <- centre(dt, "trimmed")
data.frame(dt_mean,dt_median,dt_trimmed)centre(dt,"median")[1] 4
digunakan ketika pengulangan diketahui jumlahnya dengan bentuk umum berikut: for (objek in sekuens) ekspresi
kuadrat<-c()
for (i in 1:10){
kuadrat[i] <- i^2
}
kuadrat [1] 1 4 9 16 25 36 49 64
[9] 81 100
digunakan ketika pengulangan tidak diketahui jumlahnya dan minimal pengulangan = 0. ekspresi bisa tidak dijalankan apabila kondisi while tidak terpenuhi (bernilai FALSE). Bentuk umum while: while (condition) ekspresi
i <- length(kuadrat)
akar <- c()
while (i>0){
akar[i] <- sqrt(kuadrat[i])
i <- i-1
}
akar [1] 1 2 3 4 5 6 7 8 9 10
digunakan ketika pengulangan tidak diketahui jumlahnya dan minimal pengulangan = 1. Bentuk umum repeat: repeat ekspresi (untuk menghentikan gunakan perintah break)
repeat{
i<-i+1
print(kuadrat[i])
if (i==8) {break()}
}[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 36
[1] 49
[1] 64
Berikut adalah beberapa fungsi yang telah disiapkan oleh R (built-in).
x = c(1,3,2,4,8,5,6,9,7)
sort(x,decreasing = F)[1] 1 2 3 4 5 6 7 8 9
rev(x)[1] 7 9 6 5 8 4 2 3 1
sort untuk mengurutkan data. rev untuk mereverse data, membalik urutan data (data terakhir menjadi data pertama, data kedua terakhir menjadi data kedua, dst).
log(x)[1] 0.0000000 1.0986123 0.6931472
[4] 1.3862944 2.0794415 1.6094379
[7] 1.7917595 2.1972246 1.9459101
sqrt(x)[1] 1.000000 1.732051 1.414214
[4] 2.000000 2.828427 2.236068
[7] 2.449490 3.000000 2.645751
log untuk menghitung nilai logaritma dari data. sqrt untuk menghitung nilai akar kuadrat dari data.
sum(x)[1] 45
mean(x)[1] 5
var(x)[1] 7.5
sd(x)[1] 2.738613
sum untuk menghitung jumlah data. mean untuk menghitung rata-rata data. var untuk menghitung ragam data. sd untuk menghitung standar deviasi data.
berikut adalah beberapa fungsi untuk membuat grafik.
hist(x)boxplot(x)Dapat membuat fungsi sendiri sesuai dengan kebutuhan analisis dengan bentuk umum: namafungsi <- function (argumen) isifungsi
#Membuat fungsi simpangan baku
simpangan.baku <- function(x) sqrt(var(x))
simpangan.baku(x)[1] 2.738613
contoh di atas merupakan fungsi untuk menghitung simpangan baku yang memiliki nilai akar dari ragam/var. Penggunaan fungsi dengan memanggil nama fungsi beserta argumennya dengan bentuk umum: namafungsi(arg1, arg2, …)
Pada contoh sebelumnya fungsi memiliki 1 nilai argumen yaitu x dan tidak diatur nilai defaultnya. Berikut adalah contoh fungsi yang didefinisikan nilai defaultnya, yaitu x=2.
fgs_3 <- function(x=2,y){x*y}
fgs_3(3,3) #argumen lengkap[1] 9
fgs_3(,3) #argumen tidak lengkap[1] 6
fgs_3(y=3) #penulisan argumen tidak lengkap yang lebih tepat[1] 6
Output/luaran dari fungsi adalah objek
fungsi1 <- function(x) {
y = x^2
z = sum(y)
list(y,z) #dapat ditulis: return(list(y,z))
}
fungsi1(x)[[1]]
[1] 1 9 4 16 64 25 36 81 49
[[2]]
[1] 285
y merupakan nilai kuadrat dari setiap unsur x dan z merupakan jumlah kuadrat dari x.
try: pembungkus untuk menjalankan ekspresi yang mungkin gagal dan memungkinkan kode pengguna untuk menangani pemulihan kesalahan
try(log("not a number"), silent = T)
print("errors can't stop me")[1] "errors can't stop me"
peringatan error dapat tidak ditampilkan dan langsung menjalankan perintah pada baris berikutnya.
tryCatch: menyediakan mekanisme untuk menangani kondisi yang tidak biasa, termasuk kesalahan dan peringatan
tryCatch(log(10), finally = print("Hello"))[1] "Hello"
[1] 2.302585
warning: menghasilkan pesan peringatan yang sesuai dengan argumennya
warning("bad weather today, don't forget your umbrella")bad weather today, don't forget your umbrella
stop: menghentikan eksekusi ekspresi saat ini
if (1 != 2)
stop("something is wrong")Error: something is wrong
Membuat Fungsi untuk Melakukan Pengujian Hipotesis Nilai Tengah untuk Dua Populasi dengan ragam sama. Algoritma : 1 hitung masing-masing n 2 hitung galat baku 3 hitung statistik uji 4 hitung nilai-p 5 tetapkan keputusan penerimaan atau penolakan H0
ttest <- function(y1,y2,test="dua-arah",alpha=0.05) {
n1 <- length(y1); n2 <- length(y2)
ndf <- n1+n2-2
s2 <- ((n1-1)*var(y1) + (n2-1)*var(y2))/ndf
tstat <- (mean(y1)-mean(y2))/sqrt(s2*(1/n1+1/n2))
tail.area <- switch(test,
"dua-arah"=2*(1-pt(abs(tstat),ndf)),
kecil=pt(tstat,ndf),
besar=1-pt(tstat,ndf),
{
warning("uji harus 'dua-arah', 'kecil' atau 'besar'")
NULL
}
)
list(tstat=tstat,df=ndf,reject=if(!is.null(tail.area))
tail.area < alpha, tail.area=tail.area)
}
x <- c(5,6,4,5,3,6,7)
y <- c(6,7,4,6,3,5,4)
ttest(x,y)$tstat
[1] 0.1936492
$df
[1] 12
$reject
[1] FALSE
$tail.area
[1] 0.8496898
Output fungsi di atas terdiri dari tstat (tvalue), df (derajat bebas), reject (keputusan untuk tolak H0 atau tak tolak H0), dan tail.area (pvalue).
Sebuah ekstensi dari sistem dasar R dengan kode, data dan dokumentasi dalam format standar. Paket-paket R merupakan cara yang untuk memelihara koleksi fungsi dan data set R dan untuk menyebarluaskannya.
Berikut adalah cara menginstall package R
install.packages("MASS")WARNING: Rtools is required to build R packages but is not currently installed. Please download and install the appropriate version of Rtools before proceeding:
https://cran.rstudio.com/bin/windows/Rtools/
Installing package into 㤼㸱C:/Users/fahmi/OneDrive/Documents/R/win-library/4.1㤼㸲
(as 㤼㸱lib㤼㸲 is unspecified)
trying URL 'https://cran.rstudio.com/bin/windows/contrib/4.1/MASS_7.3-56.zip'
Content type 'application/zip' length 1189141 bytes (1.1 MB)
downloaded 1.1 MB
package ‘MASS’ successfully unpacked and MD5 sums checked
The downloaded binary packages are in
C:\Users\fahmi\AppData\Local\Temp\RtmpoxXATa\downloaded_packages
Berikut adalah cara menggunakan atau menjalankan package R
library(MASS)
data(npk)
npkBeberapa package memiliki dataset yang dapat diakses dengan memanggil nama objek dataset tersebut.
Berikut adalah cara untuk melepas (unload) package R
detach("package:MASS")Mahasiswa Statistika dan Sains Data IPB, annissa_nff@apps.ipb.ac.id↩︎