Syntax ini merupakan latihan saya berdasarkan materi datacamp.
Intro to Basics
Variable Assignment
Variable allow you to store a value or an object
Basic Data Types in R
- Decimal values (contoh 4,5) called numeric
- Integer (1,2,3,4) called numeric
- Boolean values (TRUE or FALSE) called logical
- Text or string called characters
my_numeric <- 42
# Character vector
my_character <- "parahyangan"
# Logical vector
my_logical <- FALSE
What’s the data type?
class() function untuk mengecek tipe data
my_numeric <- 42
my_character <- "parahyangan"
my_logical <- FALSE
# Check class of my_numeric
class(my_numeric)
## [1] "numeric"
# Check class of my_character
class(my_character)
## [1] "character"
# Check class of my_logical
class(my_logical)
## [1] "logical"
Vectors
Create a Vector
Vektor adalah array satu dimensi yang dapat menampung data numerik, karakter, atau logika. Dengan kata lain, vektor adalah alat sederhana untuk menyimpan data.
Di R, vektor dibuat menggunakan fungsi kombinasi c()
numeric_vector <- c(1, 10, 49)
character_vector <- c("a", "b", "c")
# Boolean vector (jangan pake kutip “”)
boolean_vector <- c(TRUE,FALSE,TRUE)
# Check class of boolean_vector
class(boolean_vector)
## [1] "logical"
Naming a Vector
Kita dapat memberi nama pada elemen vektor dengan fungsi
names()
some_vector <- c("Ananda Shafira", "Mahasiswa")
names(some_vector) <- c("Name", "Profession")
some_vector
## Name Profession
## "Ananda Shafira" "Mahasiswa"
Kode ini membuat vektor some_vector dan kedua elemennya diberi nama. Elemen pertama diberi label Name, elemen kedua diberi label Profession.
Salah satu cara singkat (apabila penamaan dilakukan pada beberapa vektor
some_vector <- c("Ananda Shafira", "Mahasiswa")
label_vector <- c("Name", "Profession")
names(some_vector) <- label_vector
some_vector
## Name Profession
## "Ananda Shafira" "Mahasiswa"
Menjumlahkan Vektor
A_vector <- c(1, 2, 3)
B_vector <- c(4, 5, 6)
# Take the sum of A_vector and B_vector
total_vector <- A_vector + B_vector
# Print out total_vector
total_vector
## [1] 5 7 9
Contoh lain:
# Fira and Tyo winnings from Monday to Friday:
Point_tyo <- c(140, -50, 20, -120, 240)
Point_fira <- c(-24, -50, 100, -350, 10)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(Point_tyo) <- days_vector
names(Point_fira) <- days_vector
# Assign to total_daily how much you won/lost on each day
total_daily <- Point_tyo + Point_fira
total_daily
## Monday Tuesday Wednesday Thursday Friday
## 116 -100 120 -470 250
sum() adalah fungsi untuk menjumlahkan seluruh elemen
pada vektor
Point_tyo <- c(140, -50, 20, -120, 240)
# Total winnings with poker
total_poker <- sum(Point_tyo)
# Print out total_poker
total_poker
## [1] 230
Vector Selection
Untuk memilih spesifik elemen pada vektor, kita dapat menulis seperti
poker_vector[1] untuk memilih elemen pertama. Indeks elemen
vektor dimulai dari 1 bukan 0.
Untuk memilih multiple element pada vektor, anda dapat melakukan seperti contoh berikut:
# Tyo winnings from Monday to Friday:
Point_tyo <- c(140, -50, 20, -120, 240)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(Point_tyo) <- days_vector
# Define a new variable based on a selection
poker_midweek <- Point_tyo[c(2,3,4)]
poker_midweek
## Tuesday Wednesday Thursday
## -50 20 -120
Apabila kita ingin memilih elemen c(2,3,4,5), terdapat
cara yang lebih mudah yaitu seperti contoh berikut:
# Fira winnings from Monday to Friday:
Point_fira <- c(-24, -50, 100, -350, 10)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(Point_fira) <- days_vector
# Define a new variable based on a selection
roulette_selection_vector <- Point_fira[2:5]
roulette_selection_vector
## Tuesday Wednesday Thursday Friday
## -50 100 -350 10
Selain memilih berdasarkan posisi numerik, memilih vektor dapat menggunakan nama dari elemen vektor. Misalnya seperti berikut:
# Tyo winnings from Monday to Friday:
Point_tyo <- c(140, -50, 20, -120, 240)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(Point_tyo) <- days_vector
# Select point tyo results for Monday, Tuesday and Wednesday
point <- Point_tyo[c("Monday","Tuesday","Wednesday")]
point
## Monday Tuesday Wednesday
## 140 -50 20
Rata rata dari pointnya adalah
mean(point)
## [1] 36.66667
Selection by Comparison
Logical comparison pada R:
<untuk kurang dari>untuk lebih dari<=untuk kurang dari sama dengan>=untuk lebih dari sama dengan==untuk sama satu sama lain!=untuk tidak sama dengan
Misal ingin melihat poin yang bernilai positif(>0)
# Tyo winnings from Monday to Friday:
Point_tyo <- c(140, -50, 20, -120, 240)
days_vector <- c("Monday", "Tuesday", "Wednesday", "Thursday", "Friday")
names(Point_tyo) <- days_vector
# Which days did you make positive point?
selection_vector <- Point_tyo > 0
# Print out selection_vector
selection_vector
## Monday Tuesday Wednesday Thursday Friday
## TRUE FALSE TRUE FALSE TRUE
Misal kita ingin melihat berapa besar poin yang bernilai positif, dapat menggunakan syntax berikut:
# Select from Point_tyo these days
poker_winning_days <- Point_tyo[selection_vector]
poker_winning_days
## Monday Wednesday Friday
## 140 20 240
Matrices
What’s a Matrix?
Pada R, matriks adalah kumpulan elemen dari tipe data yang sama (numerik,karakter,logic) yang disusun menjadi sejumlah baris dan kolom yang tetap. Karena bekerja pada baris dan kolom, sebuah matriks disebut dua dimensi.
Membuat matriks pada R menggunakan fungsi matrix().
Contoh:
matrix(1:9, byrow = TRUE, nrow = 3)
## [,1] [,2] [,3]
## [1,] 1 2 3
## [2,] 4 5 6
## [3,] 7 8 9
dimana:
Argumen pertama adalah kumpulan elemen yang akan mengisi matriks, yaitu
c(1,2,3,4,5,6,7,8,9)Arguman
byrow=TRUEmenunjukkan bahwa matriks diisi berurutan berdasarkan baris. Jika ingin diisi berdasarkan kolom, dapat menggunakan argumenbyrow=FALSEArgumen
nrowmenunjukkan jumlah baris pada matriks
Contoh penggunaan argumen byrow=FALSE
matrix(1:9, byrow = FALSE, nrow = 3)
## [,1] [,2] [,3]
## [1,] 1 4 7
## [2,] 2 5 8
## [3,] 3 6 9
Analyze Matrices
Berikut adalah vektor yang berisi nilai ujian dari masing-masing mahasiswa:
# Nilai ujian
shafira <- c(88.9, 85.4)
nafisa <- c(90.4, 97.5)
putri <- c(98.6, 93.5)
Combine 3 vektor menjadi 1 vektor
# Create nilai_mahasiswa
nilai_mahasiswa <- c(shafira, nafisa, putri)
# Print nilai_mahasiswa
nilai_mahasiswa
## [1] 88.9 85.4 90.4 97.5 98.6 93.5
Buat matriks 3 baris yang tiap barisnya mewakili mahasiswa.
# Construct nilai_matrix
nilai_matrix <- matrix(nilai_mahasiswa, byrow=TRUE, nrow=3)
nilai_matrix
## [,1] [,2]
## [1,] 88.9 85.4
## [2,] 90.4 97.5
## [3,] 98.6 93.5
Naming a Matrix
Untuk menambahkan nama pada baris dan kolom pada matriks dapat menggunakan argumen berikut:
rownames(my_matrix) <- row_names_vector
colnames(my_matrix) <- col_names_vector
# Nilai ujian
shafira <- c(88.9, 85.4)
nafisa <- c(90.4, 97.5)
putri <- c(98.6, 93.5)
# Construct nilai_matrix
nilai_matrix <- matrix(c(shafira, nafisa, putri), byrow=TRUE, nrow=3)
# Vectors nama_baris and nama_kolom, used for naming
nama_kolom <- c("Matematika","IPS")
nama_baris <- c("Shafira", "Nafisa", "Putri")
# Name the columns with nama_kolom
colnames(nilai_matrix) <- nama_kolom
# Name the rows with nama_baris
rownames(nilai_matrix) <- nama_baris
# Print out nilai_matrix
nilai_matrix
## Matematika IPS
## Shafira 88.9 85.4
## Nafisa 90.4 97.5
## Putri 98.6 93.5
Calculating Matrix
Pada R, matriks dapat dihitung total tiap row dan columnnya
rowSums() untuk menjumlahkan total pada tiap baris
colSums() untuk menjumlahkan total pada tiap kolom
Contoh:
# Construct nilai_matrix
nilai <- c(88.9, 85.4, 90.4, 97.5, 98.6, 93.5)
nama_kolom <- c("Matematika","IPS")
nama_baris <- c("Shafira", "Nafisa", "Putri")
nilai_matrix <- matrix(nilai,
nrow = 3, byrow = TRUE,
dimnames = list(nama_baris, nama_kolom))
nilai_matrix
## Matematika IPS
## Shafira 88.9 85.4
## Nafisa 90.4 97.5
## Putri 98.6 93.5
# Calculate row nilai_matrix
row_vector <- rowSums(nilai_matrix)
row_vector
## Shafira Nafisa Putri
## 174.3 187.9 192.1
# Calculate column nilai_matrix
col_vector <- colSums(nilai_matrix)
col_vector
## Matematika IPS
## 277.9 276.4
dimana dimnames() adalah command untuk set names pada
row dan column pada matrix.
Adding a Column
Menambahkan satu atau lebih kolom pada matriks dapat menggunakan
argumen cbind()
Misal, kita ingin menambahkan kolom row_vector pada
nilai_matrix :
# Bind the new variable row_vector as a column to nilai_matrix
all_matrix <- cbind(nilai_matrix, row_vector)
all_matrix
## Matematika IPS row_vector
## Shafira 88.9 85.4 174.3
## Nafisa 90.4 97.5 187.9
## Putri 98.6 93.5 192.1
Adding a Row
Menambahkan satu atau lebih baris pada matriks dapat menggunakan
argumen rbind()
Misal, kita ingin menambahkan baris col_vector pada
nilai_matrix :
# Bind the new variable col_vector as a row to nilai_matrix
all_matrix <- rbind(nilai_matrix, col_vector)
all_matrix
## Matematika IPS
## Shafira 88.9 85.4
## Nafisa 90.4 97.5
## Putri 98.6 93.5
## col_vector 277.9 276.4
Selection of Matrix Elements
Memilih elemen matriks mirip dengan vektor, tetapi karna vektor memiliki 1 dimensi sedangkan matriks memiliki 2 dimensi, maka contoh argumennya sebagai berikut:
my_matrix[1,2] yaitu memilih elemen pada baris ke-1 dan
kolom ke-2
my_matrix[c(1:2,4),2:4] yaitu memilih elemen pada baris
ke-1,2,4 dan kolom ke-2,3,4
Apabila ingin memilih seluruh elemen pada baris atau kolom, maka:
my_matrix[,1] yaitu memilih seluruh elemen baris pada
kolom ke-1
my_matrix[1,] yaitu memilih seluruh elemen kolom pada
baris ke-1
Misal, ingin dilihat nilai Matematika dan IPS dari Nafisa dan Putri
nilai_matrix[2:3,]
## Matematika IPS
## Nafisa 90.4 97.5
## Putri 98.6 93.5
Arithmetic with Matrices
Sama dengan pada vektor, standar operator yang dapat digunakan pada
matriks seperti
+,-,/,*, dll.
Misal kita ingin melihat perbedaan nilai masing-masing mahasiswa dengan rata-rata
# Rata-rata dari ketiga mahasiswa
mean_mhs <- mean(nilai_matrix)
mean_mhs
## [1] 92.38333
# Selisih antara nilai dengan rata-rata
selisih <- nilai_matrix - mean_mhs
selisih
## Matematika IPS
## Shafira -3.483333 -6.983333
## Nafisa -1.983333 5.116667
## Putri 6.216667 1.116667
Argumen my_matrix1 * my_matrix2 membuat matriks di mana
setiap elemen adalah perkalian dari elemen yang sesuai di
my_matrix1 dan my_matrix2. Sehingga hasil
my_matrix1 * my_matrix2 sama dengan
my_matrix2 * my_matrix1.
Misal kita ingin mengalikan nilai_matrix dengan matriks
c(1:6)
# Membuat matriks baru berisi c(1:6)
new_matrix <- matrix(c(1:6), byrow=TRUE, nrow=3)
new_matrix
## [,1] [,2]
## [1,] 1 2
## [2,] 3 4
## [3,] 5 6
# Mengalikan nilai_matrix dengan new_matrix
prod_matrix <- nilai_matrix*new_matrix
prod_matrix
## Matematika IPS
## Shafira 88.9 170.8
## Nafisa 271.2 390.0
## Putri 493.0 561.0
# Mengalikan new_matrix dengan nilai_matrix
prod_matrix_2 <- new_matrix*nilai_matrix
prod_matrix_2
## Matematika IPS
## Shafira 88.9 170.8
## Nafisa 271.2 390.0
## Putri 493.0 561.0
# prod_matrix = prod_matrix_2
prod_matrix==prod_matrix_2
## Matematika IPS
## Shafira TRUE TRUE
## Nafisa TRUE TRUE
## Putri TRUE TRUE
Hal ini berbeda dengan standar perkalian matriks, untuk hal tersebut
argumen yang digunakan adalah %*%
# Transpose new_matrix
new_matrix <- t(new_matrix)
new_matrix
## [,1] [,2] [,3]
## [1,] 1 3 5
## [2,] 2 4 6
# Standar perkalian matriks pada nilai_matriks(3x2) dengan new_matrix(2x3) sehingga dihasilkan matriks 3x3
stan_prod_matrix <- nilai_matrix%*%new_matrix
stan_prod_matrix
## [,1] [,2] [,3]
## Shafira 259.7 608.3 956.9
## Nafisa 285.4 661.2 1037.0
## Putri 285.6 669.8 1054.0
Factors
What’s a Factor?
Faktor mengacu pada tipe data statistik yang digunakan untuk menyimpan variabel kategori. Perbedaan antara variabel kategorikal dan variabel kontinu adalah bahwa variabel kategorikal belong to kategori dengan jumlah terbatas. Sedangkan variabel kontinu belong to value dengan jumlah yang tak terbatas.
Dalam R, penting untuk mengetahui variabel yang digunakan adalah kontinu atau kategori karena perlakuannya berbeda.
Contoh variabel kategorik adalah sex, biasanya dibatasi menjadi kategori “Pria” dan “Wanita” terkadang mungkin mempertimbangkan variasi kromosom atau norma budaya yang berbeda, tetapi variabel ini akan selalu memiliki jumlah kategori yang terbatas.
Untuk membuat faktor di R digunakan fungsi factor().
Contoh, pertama buat vektor yang mengandung semua observasi dengan
kategori terbatas. Contoh sex_vector mengandung sex dari 5
individu berbeda:
# Sex vector
sex_vector <- c("Male", "Female", "Female", "Male", "Male")
Fungsi factor() akan encode vektor sebagai faktor:
# Convert sex_vector to a factor
factor_sex_vector <- factor(sex_vector)
# Print out factor_sex_vector
factor_sex_vector
## [1] Male Female Female Male Male
## Levels: Female Male
Types of Categorical Variables
Terdapat 2 tipe variabel kategori yaitu nominal dan ordinal. Variabel
nominal adalah variabel kategorik tanpa urutan/order, contoh variabel
kategorik animals_vector dengan kategori
Gajah, Jerapah, Monyet, dan
Kuda. Tidak ada kategori yang lebih diatas dari yang
lainnya artinya dianggap setara atau semuanya sama-sama binatang.
Sedangkan untuk variabel kategorik temperature_vector
dengan kategori Low, Medium, dan
High. Pada variabel ini terdapat urutan dari yang terendah
Low,Medium, dan High.
# Animals
animals_vector <- c("Gajah", "Jerapah", "Monyet", "Kuda")
factor_animals_vector <- factor(animals_vector)
factor_animals_vector
## [1] Gajah Jerapah Monyet Kuda
## Levels: Gajah Jerapah Kuda Monyet
# Temperature
temperature_vector <- c("High", "Low", "High","Low", "Medium")
factor_temperature_vector <- factor(temperature_vector, order = TRUE, levels = c("Low", "Medium", "High"))
factor_temperature_vector
## [1] High Low High Low Medium
## Levels: Low < Medium < High
Misal kita comparing ordered factors pada
temperature_vector.
# Factor value for first data analyst
v1 <- factor_temperature_vector[1]
v1
## [1] High
## Levels: Low < Medium < High
# Factor value for second data analyst
v2 <- factor_temperature_vector[2]
v2
## [1] Low
## Levels: Low < Medium < High
# Is data analyst 1 higher than data analyst 2?
v1>v2
## [1] TRUE
Factor Levels
Dengan dataset yang ada, terkadang diperlukan mengubah nama pada
level untuk kejelasan atau alasan lainnya. Mengatasi hal tersebut dapat
menggunakan fungsi levels().
levels(factor_vector) <- c("name1", "name2",...)
Contohnya misal kita punya raw data yang salah satu variabelnya
mengenai sex/jenis kelamin dari responden. Pada variabel tersebut dibuat
variabel dengan 2 kategori yaitu "M" dan "F",
lalu demi kejelasan analisis akan diubah kedua kategori tersebut menjadi
"Male" dan "Female".
# Code to build factor_survey_vector
survey_vector <- c("M", "F", "F", "M", "M")
factor_survey_vector <- factor(survey_vector)
levels(factor_survey_vector)
## [1] "F" "M"
Hal yang harus diperhatikan adalah urutan ketika menetapkan level.
Jika dilihat level dari factor_survey_vector adalah
[1] "F" "M", ketika di awal tidak dispecify level factor
pada vektor maka R akan otomatis membuat level berdasarkan alphabet.
Jadi apabila ingin mengubah menjadi "Male" dan
"Female", maka level baru perlu dibuat berdasarkan order
c("Female", "Male").
# Specify the levels of factor_survey_vector
levels(factor_survey_vector) <- c("Female", "Male")
factor_survey_vector
## [1] Male Female Female Male Male
## Levels: Female Male
Summarizing a Factor
Fungsi summary() akan memberikan gambaran singkat
tentang isi variabel. Misal:
# Build factor_survey_vector with clean levels
survey_vector <- c("M", "F", "F", "M", "M")
survey_vector
## [1] "M" "F" "F" "M" "M"
# Generate summary for survey_vector
summary(survey_vector)
## Length Class Mode
## 5 character character
factor_survey_vector <- factor(survey_vector)
levels(factor_survey_vector) <- c("Female", "Male")
factor_survey_vector
## [1] Male Female Female Male Male
## Levels: Female Male
# Generate summary for factor_survey_vector
summary(factor_survey_vector)
## Female Male
## 2 3
Data Frames
What’s a Data Frame
Pada matriks, semua elemen yang dimasukkan harus tipe yang sama. Tetapi pada kenyataannya, kita akan punya dataset dengan tipe yang berbeda-beda misal dataset dengan variabel:
“Apakah kamu pernah memakai produk ini?” adalah yes/no questions (
logical)“Berapa umurmu?” (
numeric)“Apa pendapatmu tentang produk tersebut?” adalah pernyataan terbuka (
character), dsb
Contoh data frame yang terdapat pada R adalah mtcars
# Print out built-in R data frame
mtcars
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
## Merc 280C 17.8 6 167.6 123 3.92 3.440 18.90 1 0 4 4
## Merc 450SE 16.4 8 275.8 180 3.07 4.070 17.40 0 0 3 3
## Merc 450SL 17.3 8 275.8 180 3.07 3.730 17.60 0 0 3 3
## Merc 450SLC 15.2 8 275.8 180 3.07 3.780 18.00 0 0 3 3
## Cadillac Fleetwood 10.4 8 472.0 205 2.93 5.250 17.98 0 0 3 4
## Lincoln Continental 10.4 8 460.0 215 3.00 5.424 17.82 0 0 3 4
## Chrysler Imperial 14.7 8 440.0 230 3.23 5.345 17.42 0 0 3 4
## Fiat 128 32.4 4 78.7 66 4.08 2.200 19.47 1 1 4 1
## Honda Civic 30.4 4 75.7 52 4.93 1.615 18.52 1 1 4 2
## Toyota Corolla 33.9 4 71.1 65 4.22 1.835 19.90 1 1 4 1
## Toyota Corona 21.5 4 120.1 97 3.70 2.465 20.01 1 0 3 1
## Dodge Challenger 15.5 8 318.0 150 2.76 3.520 16.87 0 0 3 2
## AMC Javelin 15.2 8 304.0 150 3.15 3.435 17.30 0 0 3 2
## Camaro Z28 13.3 8 350.0 245 3.73 3.840 15.41 0 0 3 4
## Pontiac Firebird 19.2 8 400.0 175 3.08 3.845 17.05 0 0 3 2
## Fiat X1-9 27.3 4 79.0 66 4.08 1.935 18.90 1 1 4 1
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.70 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.90 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.50 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.50 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.60 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.60 1 1 4 2
Jumlah observasi dataset bisa sangat banyak jumlahnya, sehingga
ketika ingin melihat gambaran data kadang tidak memungkinkan untuk
print semua data. Fungsi yang dapat digunakan adalah
head() untuk show observasi awal pada data frame, lalu
fungsi tail() untuk print out observasi akhir pada data
frame.
# Call head() on mtcars
head(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225 105 2.76 3.460 20.22 1 0 3 1
# Call tail() on mtcars
tail(mtcars)
## mpg cyl disp hp drat wt qsec vs am gear carb
## Porsche 914-2 26.0 4 120.3 91 4.43 2.140 16.7 0 1 5 2
## Lotus Europa 30.4 4 95.1 113 3.77 1.513 16.9 1 1 5 2
## Ford Pantera L 15.8 8 351.0 264 4.22 3.170 14.5 0 1 5 4
## Ferrari Dino 19.7 6 145.0 175 3.62 2.770 15.5 0 1 5 6
## Maserati Bora 15.0 8 301.0 335 3.54 3.570 14.6 0 1 5 8
## Volvo 142E 21.4 4 121.0 109 4.11 2.780 18.6 1 1 4 2
The Structure of Dataset
Metode lain untuk melihat gambaran singkat dari dataset adalah fungsi
str(), fungsi ini akan menunjukkan struktur dari data set.
Pada dataset, informasi yang akan didapatkan:
Jumlah total observasi (misal 32 tipe model)
Jumlah total variabel (misal 11 fitur mobil)
List lengkap dari nama variabel (misal
mpg,cyl,..)Tipe data untuk tiap variabel (misal
num)Observasi-observasi awal
str(mtcars)
## 'data.frame': 32 obs. of 11 variables:
## $ mpg : num 21 21 22.8 21.4 18.7 18.1 14.3 24.4 22.8 19.2 ...
## $ cyl : num 6 6 4 6 8 6 8 4 4 6 ...
## $ disp: num 160 160 108 258 360 ...
## $ hp : num 110 110 93 110 175 105 245 62 95 123 ...
## $ drat: num 3.9 3.9 3.85 3.08 3.15 2.76 3.21 3.69 3.92 3.92 ...
## $ wt : num 2.62 2.88 2.32 3.21 3.44 ...
## $ qsec: num 16.5 17 18.6 19.4 17 ...
## $ vs : num 0 0 1 1 0 1 0 1 1 1 ...
## $ am : num 1 1 1 0 0 0 0 0 0 0 ...
## $ gear: num 4 4 4 3 3 3 3 4 4 4 ...
## $ carb: num 4 4 1 1 2 1 4 2 2 4 ...
Creating a Data Frame
Membuat data frame pada R dapat menggunakan fungsi
data.frame().
# Definition of vectors
name <- c("Shafira", "Soleh", "Nafisa",
"Putri", "Irvanal", "Titin",
"Indah", "Gina")
sex <- c("Female", "Male", "Female",
"Female", "Male", "Female",
"Female","Female")
height <- c(164.2, 167.6, 162.7,
162.5, 166.7, 164.8,
165.5, 164.5)
weight <- c(53.5, 67, 50.2,
53.7, 60.5, 55.4,
54.7, 53.9)
kacamata <- c(FALSE, FALSE, FALSE, TRUE, TRUE, TRUE, FALSE, TRUE)
# Create a data frame from the vectors
mhs_df <- data.frame(name, sex, height, weight, kacamata)
mhs_df
## name sex height weight kacamata
## 1 Shafira Female 164.2 53.5 FALSE
## 2 Soleh Male 167.6 67.0 FALSE
## 3 Nafisa Female 162.7 50.2 FALSE
## 4 Putri Female 162.5 53.7 TRUE
## 5 Irvanal Male 166.7 60.5 TRUE
## 6 Titin Female 164.8 55.4 TRUE
## 7 Indah Female 165.5 54.7 FALSE
## 8 Gina Female 164.5 53.9 TRUE
Cek struktur dataset
str(mhs_df)
## 'data.frame': 8 obs. of 5 variables:
## $ name : chr "Shafira" "Soleh" "Nafisa" "Putri" ...
## $ sex : chr "Female" "Male" "Female" "Female" ...
## $ height : num 164 168 163 162 167 ...
## $ weight : num 53.5 67 50.2 53.7 60.5 55.4 54.7 53.9
## $ kacamata: logi FALSE FALSE FALSE TRUE TRUE TRUE ...
Selection of Data Frame Elements
Sama seperti sebelumnya, kita dapat memilih elemen yang ingin dilihat
misal cek dataframe pada kolom 1(name).
mhs_df[,1]
## [1] "Shafira" "Soleh" "Nafisa" "Putri" "Irvanal" "Titin" "Indah"
## [8] "Gina"
Daripada menggunakan numerik dalam memilih elemen pada data frame, kita dapat menggunakan nama variabel untuk memilih kolom pada data frame.
Misal kita ingin melihat elemen pada kolom sex untuk 3
observasi pertama, cara pertama:
mhs_df[1:3,2]
## [1] "Female" "Male" "Female"
Apabila menggunakan cara tersebut, kita harus mengetahui pada kolom berapa variabel yang ingin kita pilih, untuk mempermudah hal tersebut kita dapat menulis nama variabel yang dipilih seperti:
mhs_df[1:3, "sex"]
## [1] "Female" "Male" "Female"
Hal yang sering dilakukan juga adalah memilih seluruh observasi pada kolom, seperti:
mhs_df[, "sex"]
## [1] "Female" "Male" "Female" "Female" "Male" "Female" "Female" "Female"
Terdapat short-cut untuk hal tersebut, yaitu:
mhs_df$sex
## [1] "Female" "Male" "Female" "Female" "Male" "Female" "Female" "Female"
Subset
Misal kita ingin mengetahui mahasiswa yang mengenakan kacamata.
mhs_df$kacamata
## [1] FALSE FALSE FALSE TRUE TRUE TRUE FALSE TRUE
mhs_df[kacamata,"name"]
## [1] "Putri" "Irvanal" "Titin" "Gina"
Hal di atas ini bisa dilakukan dengan fungsi subset(),
yaitu sebagai berikut:
subset(my_df, subset = some_condition)
Argumen my_df adalah dataset yang ingin disubset, lalu
some_condition adalah kondisi sebagai correct subset.
subset(mhs_df, subset=kacamata)
## name sex height weight kacamata
## 4 Putri Female 162.5 53.7 TRUE
## 5 Irvanal Male 166.7 60.5 TRUE
## 6 Titin Female 164.8 55.4 TRUE
## 8 Gina Female 164.5 53.9 TRUE
Misal kita ingin mengetahui data mahasiswa dengan berat badan > 55 kg.
subset(mhs_df, subset=weight>55)
## name sex height weight kacamata
## 2 Soleh Male 167.6 67.0 FALSE
## 5 Irvanal Male 166.7 60.5 TRUE
## 6 Titin Female 164.8 55.4 TRUE
Sorting
order() adalah fungsi yang memberikan info posisi
ranking untuk setiap elemen ketika diaplikasikan pada variabel.
a <- c(100, 10, 1000)
order(a)
## [1] 2 1 3
Misalkan kita ingin reshuffle a sesuai urutan:
a[order(a)]
## [1] 10 100 1000
Contoh selanjutnya melakukan sorting pada data frame, misal kita
ingin mengurutkan dataset mhs_df berdasarkan kolom
height, maka:
positions <- order(mhs_df$height)
positions
## [1] 4 3 1 8 6 7 5 2
mhs_df[positions,]
## name sex height weight kacamata
## 4 Putri Female 162.5 53.7 TRUE
## 3 Nafisa Female 162.7 50.2 FALSE
## 1 Shafira Female 164.2 53.5 FALSE
## 8 Gina Female 164.5 53.9 TRUE
## 6 Titin Female 164.8 55.4 TRUE
## 7 Indah Female 165.5 54.7 FALSE
## 5 Irvanal Male 166.7 60.5 TRUE
## 2 Soleh Male 167.6 67.0 FALSE
Lists
List pada R dapat mengumpulkan berbagai objek dengan satu nama (nama dari listnya) dengan cara teratur. Objek-objek ini dapat berupa matriks, vektor, data frame, bahkan list lainnya, dll. Antar objek-objek tidak harus terkait satu sama lain.
Creating a List
Untuk membuat list dapat menggunakan fungsi list() :
my_list <- list(comp1, comp2 ...)
Misal, buat list dengan nama my_list yang berisikan
variabel my_vector, my_matrix, dan
my_df sebagai komponennya.
# Vector with numerics from 1 up to 10
my_vector <- 1:10
# Matrix with numerics from 1 up to 10
my_matrix <- matrix(1:10, ncol = 5)
# First 10 elements of the built-in data frame mtcars
my_df <- mtcars[1:10,]
# Construct list with these different elements:
my_list <- list(my_vector,my_matrix,my_df)
my_list
## [[1]]
## [1] 1 2 3 4 5 6 7 8 9 10
##
## [[2]]
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
##
## [[3]]
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Creating a Named List
Misal kita ingin memberi nama di setiap komponen my_list
pada contoh sebelumnya.
names(my_list) <- c("vector","matrix","data frame")
my_list
## $vector
## [1] 1 2 3 4 5 6 7 8 9 10
##
## $matrix
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 3 5 7 9
## [2,] 2 4 6 8 10
##
## $`data frame`
## mpg cyl disp hp drat wt qsec vs am gear carb
## Mazda RX4 21.0 6 160.0 110 3.90 2.620 16.46 0 1 4 4
## Mazda RX4 Wag 21.0 6 160.0 110 3.90 2.875 17.02 0 1 4 4
## Datsun 710 22.8 4 108.0 93 3.85 2.320 18.61 1 1 4 1
## Hornet 4 Drive 21.4 6 258.0 110 3.08 3.215 19.44 1 0 3 1
## Hornet Sportabout 18.7 8 360.0 175 3.15 3.440 17.02 0 0 3 2
## Valiant 18.1 6 225.0 105 2.76 3.460 20.22 1 0 3 1
## Duster 360 14.3 8 360.0 245 3.21 3.570 15.84 0 0 3 4
## Merc 240D 24.4 4 146.7 62 3.69 3.190 20.00 1 0 4 2
## Merc 230 22.8 4 140.8 95 3.92 3.150 22.90 1 0 4 2
## Merc 280 19.2 6 167.6 123 3.92 3.440 18.30 1 0 4 4
Kita juga dapat membuat list langsung dengan nama setiap komponennya, yaitu:
my_list <- list(name1 = your_comp1, name2 = your_comp2)
Misal:
my_list <- list(mahasiswa = c("Nafisa","Putri","Fira"),
nilai = c(85,90,95),
matrix = matrix(1:10, ncol = 2))
my_list
## $mahasiswa
## [1] "Nafisa" "Putri" "Fira"
##
## $nilai
## [1] 85 90 95
##
## $matrix
## [,1] [,2]
## [1,] 1 6
## [2,] 2 7
## [3,] 3 8
## [4,] 4 9
## [5,] 5 10
Selecting Elements from a List
Kita dapat merefer ke nama komponen dengan [[]] atau
$, misal”
my_list[["mahasiswa"]]
## [1] "Nafisa" "Putri" "Fira"
my_list[[1]]
## [1] "Nafisa" "Putri" "Fira"
my_list$mahasiswa
## [1] "Nafisa" "Putri" "Fira"
Selain itu kita dapat memilih elemen spesifik pada komponen, misal kita ingin memilih elemen 2 pada komponen mahasiswa:
my_list[["mahasiswa"]][2]
## [1] "Putri"
my_list[[1]][2]
## [1] "Putri"
my_list$mahasiswa[2]
## [1] "Putri"
Rangkuman
- Vectors (array 1 dimensi): dapat menyimpan nilai numerik, karakter, atau logical. Semua elemen pada vektor memiliki tipe data yang sama.
- Matrices (array 2 dimensi): dapat menyimpan nilai numerik, karakter, atau logical. Semua elemen pada vektor memiliki tipe data yang sama.
- Data Frames (objek 2 dimensi): dapat menyimpan nilai numerik, karakter, atau logical. Semua elemen pada kolom yang sama memiliki tipe data yang sama, tetapi tiap kolom bisa memiliki tipe data yang berbeda.