Pemrograman Statistika dengan R
Algoritma dan Pemrograman
Algoritma adalah urutan instruksi atau langkah-langkah yang harus dilakukan untuk menyelesaikan masalah. Syarat algoritma yang baik adalah efisien, mudah diimplementasi, mudah dipahami, akurasi tinggi, bersifat umum, langkah jelas dan detail serta bisa dikembangkan. Struktur algoritma terdiri dari 3 bagian yaitu runtunan, pemilihan/ percabangan, dan perulangan.
Dasar - Dasar R
R is a language and environment for statistical computing and graphics. R is an integrated suite of software facilities for data manipulation, calculation and graphical display. It includes an effective data handling and storage facility, a suite of operators for calculations on arrays, in particular matrices, a large, coherent, integrated collection of intermediate tools for data analysis, graphical facilities for data analysis and display either on-screen or on hardcopy, and a well-developed, simple and effective programming language which includes conditionals, loops, user-defined recursive functions and input and output facilities.
Assignment
Untuk melakukan assignment (mengisi nilai) pada objek di R dapat dilakukan dengan tiga cara
Operator | Description |
---|---|
<-, = | Leftwards Assignment |
-> | Rightwards Assignment |
Ketiga cara tersebut memberikan hasil yang sama.
Cara 1
[1] 5
Cara 2
[1] 5
Cara 3
[1] 5
R bersifat case-sensitive sehingga objek A dan objek a, adalah dua objek yang berbeda.
[1] 5
[1] 6
Untuk menamakan suatu objek di R, ada beberapa aturan yang harus dipenuhi:
- Diawali huruf (A-Z atau a-z) atau titik (.)
- Tidak menggunakan spasi dan karakter spesial (!, @, #, dst)
- Tidak menggunakan atau menghindari reserved word dalam R seperti NULL, TRUE, FALSE, q, c, t, dll
Objek di R
Vector
Untuk membuat vektor yang terdiri dari lebih dari satu elemen, maka gunakan fungsi c()
. Beberapa fungsi lain yang juga dapat digunakan dalam membuat suatu vektor adalahseq()
, rep()
, paste()
.
Assign nilai pada suatu vektor dengan fungsi c()
[1] 2 4 7 3
[1] "Sushi" "Kebab" "Pizza" "Steak"
Dengan menggunakan fungsi assign
[1] "2" "4" "7" "3"
Membentuk baris bilangan dengan fungsi seq
. Parameter by
digunakan untuk memberikan interval pada baris bilangan.
[1] 1.0 1.5 2.0 2.5 3.0 3.5 4.0 4.5 5.0 5.5 6.0 6.5 7.0 7.5 8.0
[16] 8.5 9.0 9.5 10.0
# Membentuk baris bilangan 1-10 sebanyak 12, dengan interval akan dihitungkan dari program
a4 <- seq (1,10, length.out = 12)
a4
[1] 1.000000 1.818182 2.636364 3.454545 4.272727 5.090909 5.909091
[8] 6.727273 7.545455 8.363636 9.181818 10.000000
Membentuk bilangan berulang dengan fungsi rep
[1] 1 1 1
[1] 1 2 3 1 2 3 1 2 3
# Membentuk baris bilangan 1-3, dan membentuk ulangan berdasarkan baris bilangan 1-3
# 1 akan diulang 1 kali, 2 akan diulang 2 kali, 3 diulang 3 kali
a7 <- rep (1:3, 1:3)
a7
[1] 1 2 2 3 3 3
# Membentuk baris bilanga 1-3, dan masing masing bilangan diulang 2 kali
# Output rep(2,3) adalah (2, 2, 2)
# Untuk mengulang masing masing bilangan sebanyak 2 kali
a8 <- rep (1:3, rep(2,3))
a8
[1] 1 1 2 2 3 3
Membuat pengulangan menggunakan parameter each
[1] 1 1 2 2 3 3
Membuat karakter berpola dengan menggunakan fungsi paste
dan paste0
. Fungsi paste
akan menggabungkan character namun masih terdapat spasi. Fungsi paste0
akan menggabungkan character dengan menghilangkan spasi.
[1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
[1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
[1] "A 1" "A 2" "A 3" "A 4" "A 5" "A 6" "A 7" "A 8" "A 9" "A 10"
[1] "A1" "A1" "A2" "A2" "A3" "A3"
Untuk mengakses suatu vektor dapat menggunakan []
, di dalam tanda []
diisi dengan index dari suatu vektor. Fungsi length
dapat digunakan untuk melihat panjang dari suatu vektor.
[1] "7"
[1] 5.5 6.0 6.5 7.0 7.5 8.0
[1] "A4" "A7" "A9"
[1] "A2" "A2" "A3" "A3"
[1] 12
Untuk menampilkan struktur/tipe data dan sekaligus elemen atau anggota atau isi dari vektor gunakan fungsi str()
num [1:12] 1 1.82 2.64 3.45 4.27 ...
Latihan 1
Tentukan output syntax program berikut:
[1] "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye"
[16] "la"
[1] "la" "la" "la" "ye" "ye" "ye" "la" "la" "la" "ye" "ye" "ye"
Latihan 2
[1] "x1" "y2" "x3" "y4" "x5" "y6" "x7" "y8" "x9" "y10"
Matrix
Matrix adalah vektor dua dimensi, terdiri dari baris dan kolom sehingga berbentuk segiempat. Untuk membuat suatu matrix maka digunakan fungsi matrix()
. Parameter yang ada dalam fungsi matrix()
tersebut adalah nrow
yang menyatakan jumlah baris, ncol
menyatakan jumlah kolom, dan byrow
yang dapat bernilai TRUE atau FALSE. Jika byrow
bernilai TRUE maka akan dibentuk matrix berdasarkan baris, jika bernilai FALSE maka akan dibentuk matrix berdasarkan kolom.
Ilustrasi membentuk matrix berukuran n baris x p kolom.
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[,1] [,2] [,3] [,4]
[1,] 1 5 9 3
[2,] 2 6 10 4
[3,] 3 7 1 5
[4,] 4 8 2 6
[,1] [,2] [,3] [,4] [,5]
[1,] 1 5 9 3 7
[2,] 2 6 10 4 8
[3,] 3 7 1 5 9
[4,] 4 8 2 6 10
Merubah objek vektor ke matrix
[,1] [,2]
[1,] 1 7
[2,] 2 8
[3,] 3 9
[4,] 4 10
[5,] 5 11
[6,] 6 12
[,1] [,2]
[1,] 1 3
[2,] 2 4
[,1] [,2]
[1,] 6 8
[2,] 7 9
Untuk menggabungkan baris dalam matrix dapat menggunakan fungsi rbind
dan untuk menggabungkan kolom dalam matrix dapat menggunakan fungsi cbind
.
[,1] [,2]
[1,] 1 3
[2,] 2 4
[3,] 6 8
[4,] 7 9
[,1] [,2]
[1,] 6 8
[2,] 7 9
[3,] 1 3
[4,] 2 4
Untuk mengetahui ukuran matrix dapat menggunakan fungsi dim
. Untuk mengetahui banyaknya elemen di dalam matrix dapat menggunakan fungsi length
[1] 4 2
[1] 8
Untuk mengakses matriks dapat menggunakan []
, tanda []
menyatakan index dari matrix tersebut.
Berikut adalah matrix b2 yang akan kita akses dengan tanda []
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
Mengambil elemen matrix baris ke-2, kolom ke-3.
[1] 7
Mengambil elemen matrix baris ke-2 kolom ke-2 sampai 4.
[1] 6 7 8
Mengambil elemen matrix baris ke-1 dan 2 pada semua kolom.
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[,1] [,2] [,3]
[1,] 1 3 4
[2,] 9 11 12
[1] 4
Array
Array adalah sebuah vektor dengan dimensi tidak terbatas. Untuk membuat suatu array dapat menggunakan fungsi array()
.
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
, , 1, 1
[,1]
[1,] 1
[2,] 2
, , 2, 1
[,1]
[1,] 3
[2,] 4
, , 1, 2
[,1]
[1,] 5
[2,] 6
, , 2, 2
[,1]
[1,] 7
[2,] 8
, , 1, 3
[,1]
[1,] 9
[2,] 10
, , 2, 3
[,1]
[1,] 11
[2,] 12
, , 1, 1
[,1] [,2]
[1,] 1 2
, , 2, 1
[,1] [,2]
[1,] 3 4
, , 3, 1
[,1] [,2]
[1,] 5 6
, , 4, 1
[,1] [,2]
[1,] 7 8
, , 1, 2
[,1] [,2]
[1,] 9 10
, , 2, 2
[,1] [,2]
[1,] 11 12
, , 3, 2
[,1] [,2]
[1,] 1 2
, , 4, 2
[,1] [,2]
[1,] 3 4
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
Untuk dapat mengakses suatu array maka dapat menggunakan []
.
[,1] [,2] [,3]
[1,] 1 5 9
[2,] 2 6 10
[,1] [,2]
[1,] 5 7
[2,] 6 8
[1] 9 10
Factor
Factor adalah tipe data statistik yang digunakan untuk menyimpan varabel kategorik. Factor adalah objek berjenis vektor dengan level. Factor dapat menyimpan data secara berurutan (ordered) atau pun tidak berurutan (unordered). Untuk membuat sebuah factor dapat menggunakan fungsi factor()
.
Sebagai ilustrasi, berikut dibuat sebuah factor berisi golongan darah. Golongan darah ini merupakan skala pengukuran nominal.
[1] A B AB O
Levels: A AB B O
[1] A B AB O
Levels: O A B AB
Factor berupa jenjang pendidikan dari SD sampai SMA, dengan tingkat pendidikan SD di bawah SMP, dan SMP di bawah SMA.
[1] SD SMP SMA
Levels: SD < SMA < SMP
[1] SD SMP SMA
Levels: SD < SMP < SMA
[1] SD SMP SMA
Levels: SD < SMP < SMA
Untuk dapat mengakses suatu faktor dapat menggunakan []
.
[1] B
Levels: A AB B O
[1] SMP SMA
Levels: SD < SMP < SMA
List
List merupakan objek yang dapat mengandung berbagai elemen dengan berbagai tipe data yang berbeda. List bisa dikatakan sebagai vektor dengan elemen yang tidak sejenis. Untuk membentuk suatu list maka dapat menggunakan fungsi list()
[1] 2 4 7 3
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
[1] A B AB O
Levels: O A B AB
[[1]]
[1] 2 4 7 3
[[2]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[[3]]
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
[[4]]
[1] A B AB O
Levels: O A B AB
Maka terlihat list tersebut terdiri dari vector, matrix array, dan factor.
$vect
[1] 2 4 7 3
$mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
$array
, , 1
[,1] [,2]
[1,] 1 3
[2,] 2 4
, , 2
[,1] [,2]
[1,] 5 7
[2,] 6 8
, , 3
[,1] [,2]
[1,] 9 11
[2,] 10 12
$fac
[1] A B AB O
Levels: O A B AB
Cara untuk mengakses list
[1] 2 4 7 3
[1] A B AB O
Levels: O A B AB
$mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[[1]]
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
[[2]]
[1] A B AB O
Levels: O A B AB
Untuk melihat dimensi dari list maka dapat menggunakan fungsi dim
NULL
Untuk melihat ukuran dari suatu list dapat menggunakan fungsi length
[1] 4
Untuk melihat tipe data komponen pembentuk list maka dapat menggunakan fungsi names
[1] "vect" "mat" "array" "fac"
Data Frame
Data Frame dapat dianalogikan dengan matrix, namun setiap kolom bisa memiliki tipe data yang berbeda. Untuk membuat suatu data frame maka menggunakan fungsi data.frame()
d5 a17
1 F 11
2 G 12
3 H 13
4 I 14
5 J 15
Untuk mengakses suatu data frame dapat menggunakan tanda []
.
[1] 11
d5 a17
3 H 13
[1] F G H I J
Levels: F G H I J
[1] 11 12 13 14 15
Untuk melihat nama-nama kolom dari suatu data frame dapat menggunakan fungsi colnames
[1] "d5" "a17"
Untuk melihat informasi dari suatu data frame dapat menggunakan fungsi str
'data.frame': 5 obs. of 2 variables:
$ d5 : Factor w/ 5 levels "F","G","H","I",..: 1 2 3 4 5
$ a17: int 11 12 13 14 15
Untuk melihat ringkasan statistik dari suatu data frame dapat menggunakan perintah summary
d5 a17
F:1 Min. :11
G:1 1st Qu.:12
H:1 Median :13
I:1 Mean :13
J:1 3rd Qu.:14
Max. :15
Latihan 3 Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok(anggap lah respon percobaan berupa baris bilangan). Bantulah peneliti tersebut untuk membuat raw data seperti output tersebut.
perl <- paste0("P", rep(1:4, each=3))
perl<- as.factor(perl)
kel <- rep(1:3, 4)
kel <- as.factor(kel)
resp <- seq(1,23, by=2)
data1 <- data.frame(perl,kel,resp)
data1
perl kel resp
1 P1 1 1
2 P1 2 3
3 P1 3 5
4 P2 1 7
5 P2 2 9
6 P2 3 11
7 P3 1 13
8 P3 2 15
9 P3 3 17
10 P4 1 19
11 P4 2 21
12 P4 3 23
Pengolahan Objek
Operasi Aljabar Sederhana Vektor Numerik
Operasi aljabar sederhana dapat menggunakan operator aritmatika. Operator aritmatika yang dapat digunakan sebagai berikut
Operator | Description |
---|---|
+ | Add two vectors |
- | Substracts second vector from the first |
* | Multiplies both vectors |
/ | Divide the first vector with the second |
%*% | Give the remainder for the first vector with the second |
%/% | The result of division of first vector with second (quotient) |
^ | The first vector raised to the exponent of second vector |
x1 <- c(2,6,9,5)
x2 <- 1:4
x3 <- x1 + 1:2
x4 <- x1 + 1:3
x5 <- x1*x2
x6 <- x1 %*% x1 #setara x'x
x7 <- x1 %o% x1 #setara xx'
x1= 2 6 9 5
x2= 1 2 3 4
x3= 3 8 10 7
x4= 3 8 12 6
x5= 2 12 27 20
x6= 146
x7= 4 12 18 10 12 36 54 30 18 54 81 45 10 30 45 25
Operasi Dasar Vektor Karakter
Beberapa fungsi pada vektor karakter adalah nchar
untuk menghitung jumlah karakter pada suatu vektor. paste
untuk menggabungkan character. substr
dan substring
untuk mengambil elemen. substr
mengambil elemen ke-k sampai elemen ke k+n. substring
mengambil elemen ke k sampai akhir, atau dengan batas yang sudah ditentukan.
Menghitung banyak character dari satu vector.
[1] 24
Menghitung banyak character dari masing-masing vector.
[1] 4 8 5 5
Mengambil character ke-15 sampai 18 dari objek y1.
[1] "nian"
Mengambil character ke-15 sampai selesai dari objek y1.
[1] "nian Bogor"
Mengambil character ke-4 sampai ke-8 dari objek y1.
[1] "titut"
Operasi Dasar Matriks
Fungsi-fungsi yang dapat digunakan untuk matriks adalah t
untuk mencari transpose suatu matriks. %*%
untuk melakukan perkalian matriks, %o%
, diag
, solve
, eigen
.
Matrix Z1
[,1] [,2] [,3]
[1,] 1 3 5
[2,] 2 4 6
Matrix Z2
[,1] [,2]
[1,] 1 2
[2,] 3 4
[3,] 5 6
Matrix Z3
[,1] [,2]
[1,] 6 8
[2,] 7 9
Perkalian matrix menggunakan %*%
[,1] [,2]
[1,] 35 44
[2,] 44 56
Perkalian elemen by elemen mattrix
[,1] [,2]
[1,] 210 352
[2,] 308 504
Menghitung invers matrix dengan fungsi solve
[,1] [,2]
[1,] 2.333333 -1.833333
[2,] -1.833333 1.458333
[,1] [,2]
[1,] 1 2.842171e-14
[2,] 0 1.000000e+00
[1] -8.500 6.875
[1] 90.7354949 0.2645051
[,1] [,2]
[1,] 0.6196295 -0.7848945
[2,] 0.7848945 0.6196295
Struktur Kendali
Struktur kendali berfungsi untuk mengendalikan alur eksekusi dari sekumpulan ekspresi dalam pemrograman. Umumnya terdapat dua jenis struktur kendali yaitu pengulangan (loop) dan percabangan (choice)
Eksekusi Bersyarat
Dapat menggunakan fungsi if else
, ifelse
, atau switch
. if else
digunakan untuk menyatakan kondisi - ekspresi - ekspresi. ifelse
digunakan untuk kondisi, ekspresi benar, ekspresi salah. switch
digunakan ketika “kondisi” = ekspresi, masing masing kondisi mempunyai ekspresi masing masing.
Penggunaan if
[1] "Bilangan positif"
Penggunaan if else
[1] "Bilangan positif"
Penggunaan ifelse
[1] "Bilangan positif"
Pengunaan switch
[1] "m"
Pengulangan (Loops)
Dapat menggunakan fungsi for
, while
, repeat
. Untuk for
berupa objek in sekuens kemudian ekspresi. Untuk while
maka gunakan kondisi kemudian ekspresi. repeat
gunakan ekspresi kemudian untuk menghentikan gunakan perintah break
Penggunaan for
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
Penggunaan while
[1] 1
[1] 4
[1] 9
[1] 16
[1] 25
[1] 9.244493
[1] 10.59309
Penggunaan repeat
[1] 3
[1] 5
[1] 8
[1] 12
[1] 17
Manajemen Data Frame
Manajemen data frame atau disebut juga data wrangling atau data munging is the process of transforming and mapping data from one “raw” data form into another format with the intent of making it more appropriate and valuable for a variety of downstream purposes such as analytics.. Manajemen data frame terdiri dari membuat peubah baru, subsetting data, sorting data, recoding data, merging data, dan reshaping data.
Membuat Peubah Baru
Dilakukan seperti membuat vektor (dengan indeks atau operasi seleksi).
namadataframe$namavariabelbaru<-ekspresi
namadataframe[nomorkolom]<-ekspresi
Sebagai ilustrasi kita memiliki sebuah data frame ‘data1’ yang terdiri dari variabel perl, kel, dan resp.
perl kel resp
1 P1 1 1
2 P1 2 3
3 P1 3 5
4 P2 1 7
5 P2 2 9
6 P2 3 11
7 P3 1 13
8 P3 2 15
9 P3 3 17
10 P4 1 19
11 P4 2 21
12 P4 3 23
Kemudian, akan ditambahkan peubah ‘baru1’ pada ‘data1’ yang berisi nilai 12 sampai 1 secara berurutan.
perl kel resp baru1
1 P1 1 1 12
2 P1 2 3 11
3 P1 3 5 10
4 P2 1 7 9
5 P2 2 9 8
6 P2 3 11 7
7 P3 1 13 6
8 P3 2 15 5
9 P3 3 17 4
10 P4 1 19 3
11 P4 2 21 2
12 P4 3 23 1
Subsetting Data
Subsetting Data dilakukan untuk mengakses sebagian data dengan membuat ide logic untuk diterapkan dalam vektor logic yang diinginkan. Fungsi yang digunakan adalah ==
, !=
, >
, >=
,<
, <=
, %in%
, duplicated(…)
, which(…)
, is.na(…)
, is.null(…)
, is.numeric(…)
, dll.
Mengambil data yang termasuk ‘Kelompok 1’ dari ‘data1’.
perl kel resp baru1
1 P1 1 1 12
4 P2 1 7 9
7 P3 1 13 6
10 P4 1 19 3
Mengambil data yang termasuk ‘Kelompok 1’ atau ‘Perlakuan P2’.
perl kel resp baru1
1 P1 1 1 12
4 P2 1 7 9
5 P2 2 9 8
6 P2 3 11 7
7 P3 1 13 6
10 P4 1 19 3
Mengambil amatan yang responnya berupa bilangan prima.
perl kel resp baru1
2 P1 2 3 11
3 P1 3 5 10
4 P2 1 7 9
6 P2 3 11 7
7 P3 1 13 6
9 P3 3 17 4
10 P4 1 19 3
12 P4 3 23 1
Sorting Data
Sorting Data dilakukan untuk mengurutkan data berdasarkan beberapa peubah tertentu. Dilakukan dengan membuat vektor logika untuk melakukan pengurutan data. Fungsi yang sering digunakan order(…)
, sort(…)
, rev(…),
, unique(…)
.
Sebagai ilustrasi, mengurutkan data1 berdasarkan ‘Kelompok’ secara ascending.
perl kel resp baru1
1 P1 1 1 12
4 P2 1 7 9
7 P3 1 13 6
10 P4 1 19 3
2 P1 2 3 11
5 P2 2 9 8
8 P3 2 15 5
11 P4 2 21 2
3 P1 3 5 10
6 P2 3 11 7
9 P3 3 17 4
12 P4 3 23 1
Mengurutkan ‘data1’ berdasarkan ‘Kelompok’ dan ‘Respon’ secara descending.
perl kel resp baru1
12 P4 3 23 1
9 P3 3 17 4
6 P2 3 11 7
3 P1 3 5 10
11 P4 2 21 2
8 P3 2 15 5
5 P2 2 9 8
2 P1 2 3 11
10 P4 1 19 3
7 P3 1 13 6
4 P2 1 7 9
1 P1 1 1 12
Mengurutkan ‘data1’ berdasarkan ‘Kelompok’ secara ascending dan ‘Respon’ secara descending.
indeks6 <- order(data1$resp,
decreasing=TRUE)
data7 <- data1[indeks6,]
indeks7 <- order(data7$kel)
data8 <- data7[indeks7,]
data8
perl kel resp baru1
10 P4 1 19 3
7 P3 1 13 6
4 P2 1 7 9
1 P1 1 1 12
11 P4 2 21 2
8 P3 2 15 5
5 P2 2 9 8
2 P1 2 3 11
12 P4 3 23 1
9 P3 3 17 4
6 P2 3 11 7
3 P1 3 5 10
[1] 19 13 7 1 21 15 9 3 23 17 11 5
[1] 1 3 5 7 9 11 13 15 17 19 21 23
[1] 5 11 17 23 3 9 15 21 1 7 13 19
[1] 4 8 12 3 7 11 2 6 10 1 5 9
[1] 10 7 4 1 11 8 5 2 12 9 6 3
[1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
[1] 1 2 5 6 9 10 11
[1] 19 13 21 15 23 17 11
[1] 19 13 21 15 23 17 11
Recoding Data
Recoding data digunakan untuk membuat nlai baru dari nilai peubah yang sudah ada. Dapat dilakukan secara logical, fungsi ifelse()
dan fungsi recode()
.
Sebagai ilustrasi adalah recoding pada ‘data8’ untuk variabel ‘respon’ dengan kondisi jika respon<15 maka Code = 1, selainnya Code = 0
perl kel resp baru1 Code1
10 P4 1 19 3 0
7 P3 1 13 6 1
4 P2 1 7 9 1
1 P1 1 1 12 1
11 P4 2 21 2 0
8 P3 2 15 5 0
5 P2 2 9 8 1
2 P1 2 3 11 1
12 P4 3 23 1 0
9 P3 3 17 4 0
6 P2 3 11 7 1
3 P1 3 5 10 1
perl kel resp baru1 Code1 Code2
10 P4 1 19 3 0 0
7 P3 1 13 6 1 1
4 P2 1 7 9 1 1
1 P1 1 1 12 1 1
11 P4 2 21 2 0 0
8 P3 2 15 5 0 0
5 P2 2 9 8 1 1
2 P1 2 3 11 1 1
12 P4 3 23 1 0 0
9 P3 3 17 4 0 0
6 P2 3 11 7 1 1
3 P1 3 5 10 1 1
perl kel resp baru1 Code1 Code2 Code3
10 P4 1 19 3 0 0 0
7 P3 1 13 6 1 1 1
4 P2 1 7 9 1 1 1
1 P1 1 1 12 1 1 1
11 P4 2 21 2 0 0 0
8 P3 2 15 5 0 0 0
5 P2 2 9 8 1 1 1
2 P1 2 3 11 1 1 1
12 P4 3 23 1 0 0 0
9 P3 3 17 4 0 0 0
[ reached 'max' / getOption("max.print") -- omitted 2 rows ]
Merging Data
Merging data bisa dilakukan dengan rbind()
, cbind()
, atau merge()
Sebagai ilustrasi, misalkan kita mempunya Tabel 1.
Tr k1
1 P4 50
2 P2 100
3 P5 200
Kemudian data ‘tabel1’ tersebut akan kita gabungkan dengan ‘data1’ berdasarkan peubah pertamanya.
Cara pertama:
perl kel resp baru1 k1
1 P2 3 11 7 100
2 P2 1 7 9 100
3 P2 2 9 8 100
4 P4 1 19 3 50
5 P4 2 21 2 50
6 P4 3 23 1 50
Cara kedua:
perl kel resp baru1 k1
1 P1 1 1 12 NA
2 P1 2 3 11 NA
3 P1 3 5 10 NA
4 P2 3 11 7 100
5 P2 1 7 9 100
6 P2 2 9 8 100
7 P3 2 15 5 NA
8 P3 3 17 4 NA
9 P3 1 13 6 NA
10 P4 1 19 3 50
11 P4 2 21 2 50
12 P4 3 23 1 50
13 P5 <NA> NA NA 200
Reshaping Data
Reshaping data digunakan untuk membentuk data baru dengan cara long to wide format atau wide to long format. Untuk melakukannya dapat menggunakan fungsi reshape()
Sebagai ilustrasi, kita akan mengubah data1 menjadi data dengan setiap barisnya merupakan masing masing perlakukan.
Long to Wide
perl resp.1 resp.2 resp.3
1 P1 1 3 5
4 P2 7 9 11
7 P3 13 15 17
10 P4 19 21 23
Wide to Long
perl kel resp.1
P1.1 P1 1 1
P2.1 P2 1 7
P3.1 P3 1 13
P4.1 P4 1 19
P1.2 P1 2 3
P2.2 P2 2 9
P3.2 P3 2 15
P4.2 P4 2 21
P1.3 P1 3 5
P2.3 P2 3 11
P3.3 P3 3 17
P4.3 P4 3 23
Referensi
Lutfi, Musthofa. (Februari 2019). Menguasai Bahasa R Teori dan Praktik. Penerbit Informatika.
Raharjo, Mulianto. (17 Februari 2021). STA561 Pemrograman Statistika: Objek di R. Retrieved from https://newlms.ipb.ac.id/
Raharjo, Mulianto. (17 Februari 2021). STA561 Pemrograman Statistika: Pengolahan Objek & Struktur Kendali. Retrieved from https://newlms.ipb.ac.id/
Raharjo, Mulianto. (24 Februari 2021). STA561 Pemrograman Statistika: Manajemen Data Frame. Retrieved from https://newlms.ipb.ac.id/
Soleh, A.M. (2021). STA561 Pemrograman Statistika: Pengantar Algoritma dan Pemrograman. Retrieved from https://newlms.ipb.ac.id/