PENGENALAN PROGRAM R

Tujuan Praktikum

  1. Mengenal Program R
  2. Mengenal Program R untuk konsep analisis data kategorik

Dasar Teori

R adalah bahasa pemrograman yang digunakan secara luas untuk komputasi statistik dan visualisasi data. Dibuat oleh Ross Ihaka dan Robert Gentleman di awal 1990-an, R menjadi salah satu perangkat lunak paling populer di kalangan ahli statistik, ilmuwan data, dan peneliti. R menawarkan fleksibilitas tinggi dengan ribuan paket yang tersedia untuk berbagai keperluan analisis melalui Comprehensive R Archive Network (CRAN).

R bekerja pada berbagai platform seperti Windows, macOS, dan Linux, dan menggunakan pendekatan berbasis skrip yang memungkinkan pengguna untuk melakukan analisis data yang kompleks dan visualisasi grafik interaktif dengan mudah. Salah satu fitur unggulan R adalah paket Tidyverse yang sangat membantu dalam proses analisis data yang sistematis.

R memiliki beberapa kelebihan, diantaranya adalah:
1. Efektif dalam pengelolaan data dan fasilitas penyimpanan. Ukuran file yang disimpan jauh lebih kecil dibanding software lainnya
2. Lengkap dalam operator perhitungan array,
3. Lengkap dan terdiri dari koleksi tools statistik yang terintegrasi untuk analisis data, diantaranya, mulai statistik deskriptif, fungsi probabilitas, berbagai macam uji statistik, hingga time series.
4. Tampilan grafik yang menarik dan fleksibel ataupun costumized
5. Dapat dikembangkan sesuai keperluan dan kebutuhan dan sifatnya yang terbuka, setiap orang dapat menambahkan fitur-fitur tambahan dalam bentuk paket ke dalam software R

Program Sumber R dapat didownload secara gratis pada situs web projek R di http://cran.r-project.org/, serta dilengkapi dengan paket penunjang tools atau metode lainnya. Selain itu untuk program yang berbasis Development environment/GUI dapat didownload di Rstudio http://www.rstudio.com/

TIPE DATA

R beroperasi pada suatu struktur data. Data adalah bahan baku R dan berperan sebagai input. Berikut ini adalah beberapa tipe data yang bisa diproses oleh R:
1. Data numerik
Tipe data numerik adalah semua angka dari 0 sampai 9, dapat bernilai positif atau negatif dan dapat mengandung pecahan (fraction) atau tidak. Yang penting adalah tidak bercampur dengan karakter.
2. Data Integer
Jenis data integer sama dengan numerik, tapi tidak mengandung pecahan, atau angka yang bulat. Nilai integer boleh positif dan negatif. Untuk memastikan bahwa nilai yang kita assign untuk suatu obyek adalah integer, kita bisa menggunakan perintah as.integer(). Jadi kita bisa juga memerintahkan R untuk menyimpan angka non pecahan sebagai integer.
3. Bilangan kompleks
Bilangan kompleks adalah bilangan yang memiliki struktur ”\(a + bi\)”, mengandung bilangan a yang riil (real) dan bilangan bi yang imajiner.
4. Karakter
Data berjenis karakter adalah yang terdiri dari huruf (A-Z). Tipe data ini tidak akan diproses oleh R sebagai angka.

Assignment (Penamaan Obyek)

Semua data yang bisa dibaca oleh R, dinamakan obyek/Objects. Berikut ini adalah beberapa jenis obyek dalam R: vector, list, array, matrix, data frames, function dan factor. Data baik yang kita ketik secara langsung maupun yang diimpor dari luar akan disimpan ke dalam R sebagai obyek. Setiap obyek harus memiliki nama. Nama suatu obyek sangat sensitif dan tidak boleh mengandung spasi atau simbol dash.
1. Vektor
R beroperasi pada suatu struktur data, contoh yang paling sederhana adalah vektor numerik, yakni suatu entitas tunggal yang terdiri dari koleksi terurut bilangan.
2. List
List adalah gabungan dari campuran berbagai obyek yang tidak sebangun.
3. Array
Sebuah array bisa tersusun oleh matriks dan tabel.
4. Matriks
Sebuah matriks adalah kumpulan elemen data yang disusun secara dua dimensi, terdiri dari m baris dan n kolom. Fungsi untuk membuat matriks adalah:
namamatriks<-matrix(c(dataelement), nrow = m, ncol = n)
Perintah byrow = TRUE akan membuat matriks diisi berdasarkan baris (row).
5. Data Frame
Data frame adalah kumpulan dari vektor dengan dimensi yang sama.
6. Factor
Factor merupakan bentuk khusus dari vektor dengan elemen data berupa data kategori (memiliki taraf/level). Beberapa perintah yang dapat digunakan: factor(), ordered(), as.factor() dan as.ordered().

Operator Dalam Pemprograman R

Program R

Basic Data

Basic Data Types in R

my_numeric <- 42

Character vector

my_character <- "parahyangan"

Logical vector

my_logical <- FALSE

Tipe Data

Class() function untuk mengecek tipe data

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

a. Membuat 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"

b. Menamai Vector

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"
c. Menjumlahkan Vector

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

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

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: Fira and Tyo winnings from Monday to Friday 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

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
d. 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

Matriks

a. Matriks Secara Umum

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=TRUE menunjukkan bahwa matriks diisi berurutan berdasarkan baris. Jika ingin diisi berdasarkan kolom, dapat menggunakan argumen byrow=FALSE
Argumen nrow menunjukkan jumlah baris pada matriks

b. Analisis Matriks

Berikut adalah vektor yang berisi nilai ujian dari masing-masing mahasiswa dan Combine 3 vektor menjadi 1 vektor.

Nilai ujian

shafira <- c(88.9, 85.4)
nafisa <- c(90.4, 97.5)
putri <- c(98.6, 93.5)

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
c. Menamai Matriks

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
d. Menghitung Matriks

Pada R, matriks dapat dihitung total tiap row dan columnnya
rowSums() untuk menjumlahkan total pada tiap baris
colSums() untuk menjumlahkan total pada tiap kolom

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 matriks.

e. Menambahkan Kolom

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
f. Menambahkan Baris

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
g. Memilih elemen matriks

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
h. Aritmatika matriks

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

Misal kita ingin mengalikan nilai_matrix dengan matriks 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

a. Basic 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.
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")

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
b. Tipe Dari Variabel Kategorik

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
c. Factor level

Dengan dataset yang ada, terkadang diperlukan mengubah nama pada level untuk kejelasan atau alasan lainnya. Mengatasi hal tersebut dapat menggunakan fungsi levels().

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"
d. Merangkum 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

a. Basic 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

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
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
b. Struktur Dari 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 ...
c. Membuat 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
d. Memilih Elemen Dari Data Frame

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"
e. Memilih 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
f. Menyortir

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

List

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.

a. Membuat Suatu 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
b. Membuat nama pada 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
c. Memilih Elemen Pada 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]]
## [1] "Nafisa" "Putri"  "Fira"
my_list$mahasiswa[2]
## [1] "Putri"

Untuk Latihan silahkan gunakan yang ada pada modul kawan-kawan yaaa