PENGENALAN R
R adalah sebuah free software atau software yang bebas,dibawah lisensi GNU(GNU is Not Unix) General Public Licence, yang menjamin R akan tetap selalu free(bebas).R menyediakan penanganan dan penyimpanan data, mendukung banyak operator penghitungan, menyediakan banyak alat untuk analisis data, menampilkan kemampuan graphical yang baik. R adalah perangkat lunak dan bahasa pemrograman yang dianggap sebagaisebuah dialek dan merupakan bahasa pemrograman langsung yang didasarkan pada bahasa pemrograman S yang ditulis oleh Rick Becker,John Chambers,dan Allan Wilks dari AT&T Bell Laboratories. dari bahasa S yang dibuat oleh AT&T Bell Laboratories. S tersedia sebagai perangkat lunak S-PLUS yang dikomersialkan oleh Insightful (Paradis,2005).
R merupakan sebuah paket dan sekaligus bahasa pemrograman untuk analisis data dan grafik.R merupakan bahasa pemrograman tingkat tinggi(high level programming).R dapat digunakan secara interaktif sehingga hasil perhitungan segera dapat dilihat,tetapi apabila perhitungannya kompleks maka perintah-perintah R ditulis lebih dahulu dalam text editor, kemudian dipanggil dengan fungsi source.
Kita mengetahui bahwa R bekerja dengan objek yang dicirikan oleh nama dan isinya, juga dengan atribut yang menentukan jenis data diwakili oleh suatu objek. Penamaan pada objek yaitu sebagai berikut. 1. Diawali huruf (A-Z ata a-z) atau menggunakan titik (.) 2. Tidak menggunakan spasi dan karakter spesial seperti !, @, #, dll 3. Menghindari kata yang sudah digunakan oleh R, seperti Null, TRUE, FALSE, dll
Adapun jenis-jenis objek di R sebagai berikut.
contoh.1 <- c(2, 4, 6, 8)
contoh.1
## [1] 2 4 6 8
berdasarkan hasil setelah fungsi tersebut dijalankan, suatu vektor yang berisi angka 2, 4, 6, 8 yang merupakan mode numeric.
Sequence vektor didalam R dapat ditulis seq(). suatu vektor dapat dibuat dalam sekuen nilai tertentu dengan notasi start:end (https://rpubs.com/aswinjanuarsjaf/242034). Sequence digunakan untuk menampilkan baris bilangan. Berikut merupakan contoh penggunaan seq()
contoh.2 <- seq(1:10)
contoh.2
## [1] 1 2 3 4 5 6 7 8 9 10
fungsi sekuen membolehkan penggunaan "length.out" untuk menentukan panjang vektor yang muncul misalkan kita menggunakan length.out adalah 2 seperti berikut
contoh.3 <- seq(1,10,length.out=2)
contoh.3
## [1] 1 10
rep() digunakan untuk mengulang angka yang muncul di dalam vektor sebanyak n kali yang kita inginkan.berikut adalah contoh penggunaan rep() dengan kita menginginkan elemen-elemen vektor tersebut yaitu 2 yang diulang sebanyak 5 kali.
contoh.4 <- rep(2,5)
contoh.4
## [1] 2 2 2 2 2
kita juga dapat membuat vektor yang berisi beberapa karakter (character) dan menyimpannya denga nama contoh.5 seperti berikut
contoh.5<- rep(c("makan","tidur"),2)
contoh.5
## [1] "makan" "tidur" "makan" "tidur"
paste digunakan untuk menghasilkan vektor dengan karakter berpola. Contoh penggunaan Paste sebagai berikut
contoh.6 <- paste("doraemon","nobita",1:5, sep="")
contoh.6
## [1] "doraemonnobita1" "doraemonnobita2" "doraemonnobita3" "doraemonnobita4"
## [5] "doraemonnobita5"
cara lain penggunaan paste yaitu dengan menuliskannya sebagai paste0. perbedaan keduanya adalah ketika kita menggunakan fungsi paste maka diikutsertakan penggunaan sep="" untuk menampilkan hasil gabungan 2 karakter di dalam vektor tanpa adanya spasi. sedangkan jika kita menggunakan paste0 kita tidak perlu lagi menggunakan sep="", secara default kedua karakter akan tergabung tanpa spasi. keduanya menampilkan hasil yang sama.
contoh.7 <- paste0("doraemon","nobita",1:5)
contoh.7
## [1] "doraemonnobita1" "doraemonnobita2" "doraemonnobita3" "doraemonnobita4"
## [5] "doraemonnobita5"
berbeda halnya dengan hanya menggunakan fungsi paste tanpa disertai oleh sep="". hasil yang diperoleh adalah gabungan 2 karakter dengan spasi.
contoh.8 <- paste("doraemon", "nobita")
contoh.8
## [1] "doraemon nobita"
vektor dapat pula diakses dengan cara mengakses berdasarkan letaknya. Berikut kita ingin mengakses elemen urutan ke-i, misal kita ingin memanggil karakter yang ada pada elemen ke 3 pada contoh.4, maka diperoleh
contoh.9<- contoh.4[3]
contoh.9
## [1] 2
vektor dapat pula diakses seperti berikut.
contoh.10<- contoh.4[1:3]
contoh.10
## [1] 2 2 2
Latihan1
c("la","ye")[rep(c(1,2,2,1),times=4)]
## [1] "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye" "la" "la" "ye" "ye"
## [16] "la"
c("la","ye")[rep(rep(1:2,each=3),2)]
## [1] "la" "la" "la" "ye" "ye" "ye" "la" "la" "la" "ye" "ye" "ye"
Latihan2
sintakslatihan2.2<-c("X1","Y2","X3","Y4","Y5","X6","Y7","X8","Y9","10")
sintakslatihan2.1<- seq(1,30,by=3)
names(sintakslatihan2.1)<-sintakslatihan2.2
sintakslatihan2.1
## X1 Y2 X3 Y4 Y5 X6 Y7 X8 Y9 10
## 1 4 7 10 13 16 19 22 25 28
Matriks
Suatu matriks di R dapat ditulis "matrix()". Matriks merupakan suatu vektor dengan penambahan atribut dimensi (dim) atau jumlah baris dan kolom pada matriks. berikut merupakan contoh matriks yang dibentuk dari unsur-unsur pada vektor contoh.1, kemudian kita membentuk matriks dengan ukuran baris sama dengan 2 dan kolom sama dengan 2, atau dengan kata lain matriks berdimensi 2x2.
matriks.1 <- matrix(contoh.1,2,2)
matriks.1
## [,1] [,2]
## [1,] 2 6
## [2,] 4 8
Berikut merupakan contoh matriks berukuran 2x2 dengan unsur-unsurnya berasal dari bilangan 1 hingga 10.
matriks.2 <- matrix(1:10,2,2)
matriks.2
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
penulisan matriks di R juga dapat dilakukan dengan mendefinisikan data, jumlah baris (nr), dan jumlah kolom (nc) seperti contoh berikut
matriks.3 <- matrix(data=5,nr=3,nc=3)
matriks.3
## [,1] [,2] [,3]
## [1,] 5 5 5
## [2,] 5 5 5
## [3,] 5 5 5
Misalnya, kita memiliki dua vektor, yaitu X =c(4,5,3,6) dan Y =c(2,4,3,6), maka hasil berbagai operasi hitung biasa di antara kedua vektor ini adalah
X<-matrix(c(4,5,3,6))
Y<-matrix(c(2,4,3,6))
hasilkali<-X*Y
hasilkali
## [,1]
## [1,] 8
## [2,] 20
## [3,] 9
## [4,] 36
Vektor X dan Y tersebut dapat digabungkan sehingga membentuk matriks dengan ukuran 4x2, menggunakan perintah cbind.
hasilgabung<-cbind(X,Y)
hasilgabung
## [,1] [,2]
## [1,] 4 2
## [2,] 5 4
## [3,] 3 3
## [4,] 6 6
Pada R, kita juga dapat mengetahui dimensi atau ukuran matriks yang kita miliki dengan menggunakan perintah dim seperti berikut
dim(hasilgabung)
## [1] 4 2
ketika kita ingin mengubah baris menjadi kolom, dan kolom menjadi baris, dapat menggunakan fungsi transpose matriks seperti berikut.
t(hasilgabung)
## [,1] [,2] [,3] [,4]
## [1,] 4 5 3 6
## [2,] 2 4 3 6
untuk mengetahui determinan dari matriks dapat menggunakan fungsi determinan matriks seperti berikut.
matriks.A<-matrix(1:10,2,2)
det(matriks.A)
## [1] -2
Kemudian, untuk mengetahui diagonal matriks menggunakan fungsi diagonal matrik seperti berikut.
diag(matriks.A)
## [1] 1 4
Kemudian untuk mengetahui inverse dari matriks tersebut dapat menggunakan fungsi inverse matriks seperti berikut.
solve(matriks.A)
## [,1] [,2]
## [1,] -2 1.5
## [2,] 1 -0.5
x <- 1:4; n <- 10; M <- c(10, 35); y <- 2:4
data.frame(x,n)
## x n
## 1 1 10
## 2 2 10
## 3 3 10
## 4 4 10
data.frame(x,M)
## x M
## 1 1 10
## 2 2 35
## 3 3 10
## 4 4 35
L1 <- list(x, y); L2 <- list(A=x, B=y)
L1
## [[1]]
## [1] 1 2 3 4
##
## [[2]]
## [1] 2 3 4
factor(1:3)
## [1] 1 2 3
## Levels: 1 2 3
factor(1:3, levels=1:5)
## [1] 1 2 3
## Levels: 1 2 3 4 5
factor(1:3, labels=c("A", "B", "C"))
## [1] A B C
## Levels: A B C
factor(1:5, exclude=4)
## [1] 1 2 3 <NA> 5
## Levels: 1 2 3 5
data<-1:12
ruang.vektor1<-array(data, dim=c(3,5,5))
ruang.vektor1
## , , 1
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 4 7 10 1
## [2,] 2 5 8 11 2
## [3,] 3 6 9 12 3
##
## , , 2
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 4 7 10 1 4
## [2,] 5 8 11 2 5
## [3,] 6 9 12 3 6
##
## , , 3
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 7 10 1 4 7
## [2,] 8 11 2 5 8
## [3,] 9 12 3 6 9
##
## , , 4
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 10 1 4 7 10
## [2,] 11 2 5 8 11
## [3,] 12 3 6 9 12
##
## , , 5
##
## [,1] [,2] [,3] [,4] [,5]
## [1,] 1 4 7 10 1
## [2,] 2 5 8 11 2
## [3,] 3 6 9 12 3
suatu objek dapat diconverting dengan menggunakan fungsi as.numeric untuk mengkonversi numeric, as.logical untuk mengkonversi logical, dan as.character untuk mengkonversi character. berikut adalah contohnya
faktor1<-factor(c(1,10))
faktor1
## [1] 1 10
## Levels: 1 10
as.numeric(faktor1)
## [1] 1 2
as.factor(faktor1)
## [1] 1 10
## Levels: 1 10
as.array(faktor1)
## [1] 1 10
## Levels: 1 10
as.list(faktor1)
## [[1]]
## [1] 1
## Levels: 1 10
##
## [[2]]
## [1] 10
## Levels: 1 10
as.data.frame(faktor1)
## faktor1
## 1 1
## 2 10
fac2 <- factor(c("Male", "Female"))
fac2
## [1] Male Female
## Levels: Female Male
berdasarkan hasil pada fac2 kita ingin mengkonversi caharacter "Male" dan "Female" ke dalam numeric, untuk itu kita dapat menggunakan fungsi as.numeric seperti berikut
as.numeric(fac2)
## [1] 2 1
Seorang peneliti merancang sebuah perancangan percobaan RAKL dengan 4 perlakuan dan 3 kelompok (anggaplah respon percobaan berupa baris bilangan). Bantulah peneliti tersebut untuk membuat raw data seperti output sebagai berikut!
Perl <- paste("P",rep(1:4,each=3),sep="")
Kel <- factor(rep(1:3,4))
Resp <- seq(1,24,by=1)
percobaan.RAKL <- data.frame(Perl,Kel,Resp)
percobaan.RAKL
## Perl Kel Resp
## 1 P1 1 1
## 2 P1 2 2
## 3 P1 3 3
## 4 P2 1 4
## 5 P2 2 5
## 6 P2 3 6
## 7 P3 1 7
## 8 P3 2 8
## 9 P3 3 9
## 10 P4 1 10
## 11 P4 2 11
## 12 P4 3 12
## 13 P1 1 13
## 14 P1 2 14
## 15 P1 3 15
## 16 P2 1 16
## 17 P2 2 17
## 18 P2 3 18
## 19 P3 1 19
## 20 P3 2 20
## 21 P3 3 21
## 22 P4 1 22
## 23 P4 2 23
## 24 P4 3 24
is.vector(percobaan.RAKL)
## [1] FALSE
as.vector(percobaan.RAKL)
## Perl Kel Resp
## 1 P1 1 1
## 2 P1 2 2
## 3 P1 3 3
## 4 P2 1 4
## 5 P2 2 5
## 6 P2 3 6
## 7 P3 1 7
## 8 P3 2 8
## 9 P3 3 9
## 10 P4 1 10
## 11 P4 2 11
## 12 P4 3 12
## 13 P1 1 13
## 14 P1 2 14
## 15 P1 3 15
## 16 P2 1 16
## 17 P2 2 17
## 18 P2 3 18
## 19 P3 1 19
## 20 P3 2 20
## 21 P3 3 21
## 22 P4 1 22
## 23 P4 2 23
## 24 P4 3 24
as.matrix(percobaan.RAKL)
## Perl Kel Resp
## [1,] "P1" "1" " 1"
## [2,] "P1" "2" " 2"
## [3,] "P1" "3" " 3"
## [4,] "P2" "1" " 4"
## [5,] "P2" "2" " 5"
## [6,] "P2" "3" " 6"
## [7,] "P3" "1" " 7"
## [8,] "P3" "2" " 8"
## [9,] "P3" "3" " 9"
## [10,] "P4" "1" "10"
## [11,] "P4" "2" "11"
## [12,] "P4" "3" "12"
## [13,] "P1" "1" "13"
## [14,] "P1" "2" "14"
## [15,] "P1" "3" "15"
## [16,] "P2" "1" "16"
## [17,] "P2" "2" "17"
## [18,] "P2" "3" "18"
## [19,] "P3" "1" "19"
## [20,] "P3" "2" "20"
## [21,] "P3" "3" "21"
## [22,] "P4" "1" "22"
## [23,] "P4" "2" "23"
## [24,] "P4" "3" "24"
as.list(percobaan.RAKL)
## $Perl
## [1] "P1" "P1" "P1" "P2" "P2" "P2" "P3" "P3" "P3" "P4" "P4" "P4" "P1" "P1" "P1"
## [16] "P2" "P2" "P2" "P3" "P3" "P3" "P4" "P4" "P4"
##
## $Kel
## [1] 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3 1 2 3
## Levels: 1 2 3
##
## $Resp
## [1] 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24
as.data.frame(percobaan.RAKL)
## Perl Kel Resp
## 1 P1 1 1
## 2 P1 2 2
## 3 P1 3 3
## 4 P2 1 4
## 5 P2 2 5
## 6 P2 3 6
## 7 P3 1 7
## 8 P3 2 8
## 9 P3 3 9
## 10 P4 1 10
## 11 P4 2 11
## 12 P4 3 12
## 13 P1 1 13
## 14 P1 2 14
## 15 P1 3 15
## 16 P2 1 16
## 17 P2 2 17
## 18 P2 3 18
## 19 P3 1 19
## 20 P3 2 20
## 21 P3 3 21
## 22 P4 1 22
## 23 P4 2 23
## 24 P4 3 24
Misalkan kita ingin membuat suatu dataset berbentuk data frame di R, berikut adalah fungsi yang digunakan untuk menghasilkan data frame 3 variabel.
Perl <- paste("P",rep(1:4,each=3),sep="")
Kel <- factor(rep(1:3,4))
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
Didalam manajemen data,kita dapat membuat Variabel Baru dalam Data Frame. Misal kita ingin membuat variabel 'baru1' yang berisi nilai dari 12 sampai 1 secara berurutan dengan fungsi yang digunakan yaitu nama data frame ditambahkan dengan namavariabel baru yang ingin dibuat kemudian menuliskan ekspresi seperti berikut.
data1$baru1<-12:1
data1
## 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 didalam R kita juga dapat mensubset variabel yang kita inginkan. Misal dari data1 tersebut ingin diambil yang termasuk kelompok 1 sepeerti berikut.
indeks1 <- data1$Kel ==1
data2 <- data1[indeks1,]
data2
## Perl Kel Resp baru1
## 1 P1 1 1 12
## 4 P2 1 7 9
## 7 P3 1 13 6
## 10 P4 1 19 3
Dari data1 tersebut kita ingin mengambil yang termasuk kelompok 1 atau perlakuan P2. Maka fungsi yang digunakan yaitu seperti berikut
indeks2 <- data1$Kel == 1 |
data1$Perl == "P2"
data3 <- data1[indeks2,]
data3
## 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
Dari data1 tersebut kita mengambil amatan yang responnya berupa bilangan prima
indeks3 <- data1$Resp %in%
c(2,3,5,7,11,13,17,19,23)
data4 <- data1[indeks3,]
data4
## 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
Order digunakan untuk menyusun ulang argumen pertamanya menjadi urutan naik atau turun.Berikut adalah contoh penggunaan order.
indeks4 <- order(data1$Kel)
data5 <- data1[indeks4,]
data5
## 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
Berikut adalah contoh mengurutkan data berdasarkan kelompok dan respon secara descending
indeks5 <- order(data1$Kel,
data1$Resp, decreasing=TRUE)
data6 <- data1[indeks5,]
data6
## 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
Berikut adalah contoh mengurutkan data 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
Sort data Misal kita mensort data respon pada dataframe data8, didapatkan hasil seperti berikut
data8$Resp
## [1] 19 13 7 1 21 15 9 3 23 17 11 5
sort(data8$Resp)
## [1] 1 3 5 7 9 11 13 15 17 19 21 23
order(data8$Resp)
## [1] 4 8 12 3 7 11 2 6 10 1 5 9
rank(data8$Resp)
## [1] 10 7 4 1 11 8 5 2 12 9 6 3
data8$Resp>10
## [1] TRUE TRUE FALSE FALSE TRUE TRUE FALSE FALSE TRUE TRUE TRUE FALSE
which(data8$Resp>10)
## [1] 1 2 5 6 9 10 11
data8$Resp[data8$Resp>10]
## [1] 19 13 21 15 23 17 11
data8$Resp[which(data8$Resp>10)]
## [1] 19 13 21 15 23 17 11
Misal kita recoding pada data8 untuk variabel respon dengan logical kondisi jika respon<15 maka Code = 1, selainnya Code = 0, diperoleh hasil seperti berikut
logcl= data8$Code1 <- 0*(data8$Resp>=15) + 1*(data8$Resp<15)
logcl
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
adapun dengan menggunakan fungsi ifelse kita peroleh
ifls= data8$Code2 <- ifelse(data8$Resp<15,1,0)
ifls
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
dengan menggunakan fungsi recode kita peroleh hasil
library(car)
## Loading required package: carData
rcde= data8$Code3 <- recode(data8$Resp,'1:14=1; else=0')
rcde
## [1] 0 1 1 1 0 0 1 1 0 0 1 1
merging data
Jika ingin menggabungkan data1 dengan suatu tabel1 berdasarkan peubah pertamanya, kita dapat menggunakan fungsi merge seperti berikut ini.
tabel1 <- data.frame(Tr=c("P4","P2", "P5"),k1=c(50,100,200))
data9<-merge(data1, tabel1,
by.x=1, by.y=1, all=FALSE)
data10<-merge(data1, tabel1,by.x="Perl",by.y="Tr",all=TRUE)
data10
## 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
Ubahlah data tersebut menjadi data dengan setiap barisnya merupakan masing-masing A
Long to wide
data11 <- reshape(data1[,-4],
idvar="Perl", timevar="Kel",
direction="wide")
data11
## 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
data12 <- reshape(data11,
idvar="Perl", timevar="Kel",
direction="long")
data12
## 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
iris merupakan suatu dataset yang terdapat di R
library(datasets)
data(iris)
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species
## 1 5.1 3.5 1.4 0.2 setosa
## 2 4.9 3.0 1.4 0.2 setosa
## 3 4.7 3.2 1.3 0.2 setosa
## 4 4.6 3.1 1.5 0.2 setosa
## 5 5.0 3.6 1.4 0.2 setosa
## 6 5.4 3.9 1.7 0.4 setosa
kita dapat melihat struktur dari dataset iris menggunakan fungsi str().
str(iris)
## 'data.frame': 150 obs. of 5 variables:
## $ Sepal.Length: num 5.1 4.9 4.7 4.6 5 5.4 4.6 5 4.4 4.9 ...
## $ Sepal.Width : num 3.5 3 3.2 3.1 3.6 3.9 3.4 3.4 2.9 3.1 ...
## $ Petal.Length: num 1.4 1.4 1.3 1.5 1.4 1.7 1.4 1.5 1.4 1.5 ...
## $ Petal.Width : num 0.2 0.2 0.2 0.2 0.2 0.4 0.3 0.2 0.2 0.1 ...
## $ Species : Factor w/ 3 levels "setosa","versicolor",..: 1 1 1 1 1 1 1 1 1 1 ...
class(iris)
## [1] "data.frame"
Misalkan kita ingin membuat variabel baru
iris$var.baru<-0.1:15
head(iris)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species var.baru
## 1 5.1 3.5 1.4 0.2 setosa 0.1
## 2 4.9 3.0 1.4 0.2 setosa 1.1
## 3 4.7 3.2 1.3 0.2 setosa 2.1
## 4 4.6 3.1 1.5 0.2 setosa 3.1
## 5 5.0 3.6 1.4 0.2 setosa 4.1
## 6 5.4 3.9 1.7 0.4 setosa 5.1
subsetting data digunakan untuk mengakses sebagian data yang ada di dalam data frame. Kita ingin melihat data khusus untuk Sepal.Length yang lebih dari 5.
data.sepal1<-iris$Sepal.Length >5
data.sepal1<-iris[data.sepal1,]
head(data.sepal1)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species var.baru
## 1 5.1 3.5 1.4 0.2 setosa 0.1
## 6 5.4 3.9 1.7 0.4 setosa 5.1
## 11 5.4 3.7 1.5 0.2 setosa 10.1
## 15 5.8 4.0 1.2 0.2 setosa 14.1
## 16 5.7 4.4 1.5 0.4 setosa 0.1
## 17 5.4 3.9 1.3 0.4 setosa 1.1
Kita ingin melihat data khusus untuk Sepal.Length kecil dari 5.1 dan Sepal.Width besar dari 3.0, sehingga diperoleh hasil yang dapat dilihat di bawah ini.
data.sepal2<-(iris$Sepal.Length < 5.1 & iris$Sepal.Width > 3.0)
data.sepal2<-iris[data.sepal2,]
head(data.sepal2)
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species var.baru
## 3 4.7 3.2 1.3 0.2 setosa 2.1
## 4 4.6 3.1 1.5 0.2 setosa 3.1
## 5 5.0 3.6 1.4 0.2 setosa 4.1
## 7 4.6 3.4 1.4 0.3 setosa 6.1
## 8 5.0 3.4 1.5 0.2 setosa 7.1
## 10 4.9 3.1 1.5 0.1 setosa 9.1
Mengurutkan data Species menggunakan "order" dengan urutan decreasing seperti berikut
urutan.species<- order(iris$Species,decreasing = TRUE)
iris[(urutan.species),]
## Sepal.Length Sepal.Width Petal.Length Petal.Width Species var.baru
## 101 6.3 3.3 6.0 2.5 virginica 10.1
## 102 5.8 2.7 5.1 1.9 virginica 11.1
## 103 7.1 3.0 5.9 2.1 virginica 12.1
## 104 6.3 2.9 5.6 1.8 virginica 13.1
## 105 6.5 3.0 5.8 2.2 virginica 14.1
## 106 7.6 3.0 6.6 2.1 virginica 0.1
## 107 4.9 2.5 4.5 1.7 virginica 1.1
## 108 7.3 2.9 6.3 1.8 virginica 2.1
## 109 6.7 2.5 5.8 1.8 virginica 3.1
## 110 7.2 3.6 6.1 2.5 virginica 4.1
## 111 6.5 3.2 5.1 2.0 virginica 5.1
## 112 6.4 2.7 5.3 1.9 virginica 6.1
## 113 6.8 3.0 5.5 2.1 virginica 7.1
## 114 5.7 2.5 5.0 2.0 virginica 8.1
## 115 5.8 2.8 5.1 2.4 virginica 9.1
## 116 6.4 3.2 5.3 2.3 virginica 10.1
## 117 6.5 3.0 5.5 1.8 virginica 11.1
## 118 7.7 3.8 6.7 2.2 virginica 12.1
## 119 7.7 2.6 6.9 2.3 virginica 13.1
## 120 6.0 2.2 5.0 1.5 virginica 14.1
## 121 6.9 3.2 5.7 2.3 virginica 0.1
## 122 5.6 2.8 4.9 2.0 virginica 1.1
## 123 7.7 2.8 6.7 2.0 virginica 2.1
## 124 6.3 2.7 4.9 1.8 virginica 3.1
## 125 6.7 3.3 5.7 2.1 virginica 4.1
## 126 7.2 3.2 6.0 1.8 virginica 5.1
## 127 6.2 2.8 4.8 1.8 virginica 6.1
## 128 6.1 3.0 4.9 1.8 virginica 7.1
## 129 6.4 2.8 5.6 2.1 virginica 8.1
## 130 7.2 3.0 5.8 1.6 virginica 9.1
## 131 7.4 2.8 6.1 1.9 virginica 10.1
## 132 7.9 3.8 6.4 2.0 virginica 11.1
## 133 6.4 2.8 5.6 2.2 virginica 12.1
## 134 6.3 2.8 5.1 1.5 virginica 13.1
## 135 6.1 2.6 5.6 1.4 virginica 14.1
## 136 7.7 3.0 6.1 2.3 virginica 0.1
## 137 6.3 3.4 5.6 2.4 virginica 1.1
## 138 6.4 3.1 5.5 1.8 virginica 2.1
## 139 6.0 3.0 4.8 1.8 virginica 3.1
## 140 6.9 3.1 5.4 2.1 virginica 4.1
## 141 6.7 3.1 5.6 2.4 virginica 5.1
## 142 6.9 3.1 5.1 2.3 virginica 6.1
## 143 5.8 2.7 5.1 1.9 virginica 7.1
## 144 6.8 3.2 5.9 2.3 virginica 8.1
## 145 6.7 3.3 5.7 2.5 virginica 9.1
## 146 6.7 3.0 5.2 2.3 virginica 10.1
## 147 6.3 2.5 5.0 1.9 virginica 11.1
## 148 6.5 3.0 5.2 2.0 virginica 12.1
## 149 6.2 3.4 5.4 2.3 virginica 13.1
## 150 5.9 3.0 5.1 1.8 virginica 14.1
## 51 7.0 3.2 4.7 1.4 versicolor 5.1
## 52 6.4 3.2 4.5 1.5 versicolor 6.1
## 53 6.9 3.1 4.9 1.5 versicolor 7.1
## 54 5.5 2.3 4.0 1.3 versicolor 8.1
## 55 6.5 2.8 4.6 1.5 versicolor 9.1
## 56 5.7 2.8 4.5 1.3 versicolor 10.1
## 57 6.3 3.3 4.7 1.6 versicolor 11.1
## 58 4.9 2.4 3.3 1.0 versicolor 12.1
## 59 6.6 2.9 4.6 1.3 versicolor 13.1
## 60 5.2 2.7 3.9 1.4 versicolor 14.1
## 61 5.0 2.0 3.5 1.0 versicolor 0.1
## 62 5.9 3.0 4.2 1.5 versicolor 1.1
## 63 6.0 2.2 4.0 1.0 versicolor 2.1
## 64 6.1 2.9 4.7 1.4 versicolor 3.1
## 65 5.6 2.9 3.6 1.3 versicolor 4.1
## 66 6.7 3.1 4.4 1.4 versicolor 5.1
## 67 5.6 3.0 4.5 1.5 versicolor 6.1
## 68 5.8 2.7 4.1 1.0 versicolor 7.1
## 69 6.2 2.2 4.5 1.5 versicolor 8.1
## 70 5.6 2.5 3.9 1.1 versicolor 9.1
## 71 5.9 3.2 4.8 1.8 versicolor 10.1
## 72 6.1 2.8 4.0 1.3 versicolor 11.1
## 73 6.3 2.5 4.9 1.5 versicolor 12.1
## 74 6.1 2.8 4.7 1.2 versicolor 13.1
## 75 6.4 2.9 4.3 1.3 versicolor 14.1
## 76 6.6 3.0 4.4 1.4 versicolor 0.1
## 77 6.8 2.8 4.8 1.4 versicolor 1.1
## 78 6.7 3.0 5.0 1.7 versicolor 2.1
## 79 6.0 2.9 4.5 1.5 versicolor 3.1
## 80 5.7 2.6 3.5 1.0 versicolor 4.1
## 81 5.5 2.4 3.8 1.1 versicolor 5.1
## 82 5.5 2.4 3.7 1.0 versicolor 6.1
## 83 5.8 2.7 3.9 1.2 versicolor 7.1
## 84 6.0 2.7 5.1 1.6 versicolor 8.1
## 85 5.4 3.0 4.5 1.5 versicolor 9.1
## 86 6.0 3.4 4.5 1.6 versicolor 10.1
## 87 6.7 3.1 4.7 1.5 versicolor 11.1
## 88 6.3 2.3 4.4 1.3 versicolor 12.1
## 89 5.6 3.0 4.1 1.3 versicolor 13.1
## 90 5.5 2.5 4.0 1.3 versicolor 14.1
## 91 5.5 2.6 4.4 1.2 versicolor 0.1
## 92 6.1 3.0 4.6 1.4 versicolor 1.1
## 93 5.8 2.6 4.0 1.2 versicolor 2.1
## 94 5.0 2.3 3.3 1.0 versicolor 3.1
## 95 5.6 2.7 4.2 1.3 versicolor 4.1
## 96 5.7 3.0 4.2 1.2 versicolor 5.1
## 97 5.7 2.9 4.2 1.3 versicolor 6.1
## 98 6.2 2.9 4.3 1.3 versicolor 7.1
## 99 5.1 2.5 3.0 1.1 versicolor 8.1
## 100 5.7 2.8 4.1 1.3 versicolor 9.1
## 1 5.1 3.5 1.4 0.2 setosa 0.1
## 2 4.9 3.0 1.4 0.2 setosa 1.1
## 3 4.7 3.2 1.3 0.2 setosa 2.1
## 4 4.6 3.1 1.5 0.2 setosa 3.1
## 5 5.0 3.6 1.4 0.2 setosa 4.1
## 6 5.4 3.9 1.7 0.4 setosa 5.1
## 7 4.6 3.4 1.4 0.3 setosa 6.1
## 8 5.0 3.4 1.5 0.2 setosa 7.1
## 9 4.4 2.9 1.4 0.2 setosa 8.1
## 10 4.9 3.1 1.5 0.1 setosa 9.1
## 11 5.4 3.7 1.5 0.2 setosa 10.1
## 12 4.8 3.4 1.6 0.2 setosa 11.1
## 13 4.8 3.0 1.4 0.1 setosa 12.1
## 14 4.3 3.0 1.1 0.1 setosa 13.1
## 15 5.8 4.0 1.2 0.2 setosa 14.1
## 16 5.7 4.4 1.5 0.4 setosa 0.1
## 17 5.4 3.9 1.3 0.4 setosa 1.1
## 18 5.1 3.5 1.4 0.3 setosa 2.1
## 19 5.7 3.8 1.7 0.3 setosa 3.1
## 20 5.1 3.8 1.5 0.3 setosa 4.1
## 21 5.4 3.4 1.7 0.2 setosa 5.1
## 22 5.1 3.7 1.5 0.4 setosa 6.1
## 23 4.6 3.6 1.0 0.2 setosa 7.1
## 24 5.1 3.3 1.7 0.5 setosa 8.1
## 25 4.8 3.4 1.9 0.2 setosa 9.1
## 26 5.0 3.0 1.6 0.2 setosa 10.1
## 27 5.0 3.4 1.6 0.4 setosa 11.1
## 28 5.2 3.5 1.5 0.2 setosa 12.1
## 29 5.2 3.4 1.4 0.2 setosa 13.1
## 30 4.7 3.2 1.6 0.2 setosa 14.1
## 31 4.8 3.1 1.6 0.2 setosa 0.1
## 32 5.4 3.4 1.5 0.4 setosa 1.1
## 33 5.2 4.1 1.5 0.1 setosa 2.1
## 34 5.5 4.2 1.4 0.2 setosa 3.1
## 35 4.9 3.1 1.5 0.2 setosa 4.1
## 36 5.0 3.2 1.2 0.2 setosa 5.1
## 37 5.5 3.5 1.3 0.2 setosa 6.1
## 38 4.9 3.6 1.4 0.1 setosa 7.1
## 39 4.4 3.0 1.3 0.2 setosa 8.1
## 40 5.1 3.4 1.5 0.2 setosa 9.1
## 41 5.0 3.5 1.3 0.3 setosa 10.1
## 42 4.5 2.3 1.3 0.3 setosa 11.1
## 43 4.4 3.2 1.3 0.2 setosa 12.1
## 44 5.0 3.5 1.6 0.6 setosa 13.1
## 45 5.1 3.8 1.9 0.4 setosa 14.1
## 46 4.8 3.0 1.4 0.3 setosa 0.1
## 47 5.1 3.8 1.6 0.2 setosa 1.1
## 48 4.6 3.2 1.4 0.2 setosa 2.1
## 49 5.3 3.7 1.5 0.2 setosa 3.1
## 50 5.0 3.3 1.4 0.2 setosa 4.1
Kemudian, kita ingin menampilkan Species dengan menggunakan "sort" sehingga yang muncul hanyalah nama-nama species yang ada dalam dataset
sort(iris$Species)
## [1] setosa setosa setosa setosa setosa setosa
## [7] setosa setosa setosa setosa setosa setosa
## [13] setosa setosa setosa setosa setosa setosa
## [19] setosa setosa setosa setosa setosa setosa
## [25] setosa setosa setosa setosa setosa setosa
## [31] setosa setosa setosa setosa setosa setosa
## [37] setosa setosa setosa setosa setosa setosa
## [43] setosa setosa setosa setosa setosa setosa
## [49] setosa setosa versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor virginica virginica
## [103] virginica virginica virginica virginica virginica virginica
## [109] virginica virginica virginica virginica virginica virginica
## [115] virginica virginica virginica virginica virginica virginica
## [121] virginica virginica virginica virginica virginica virginica
## [127] virginica virginica virginica virginica virginica virginica
## [133] virginica virginica virginica virginica virginica virginica
## [139] virginica virginica virginica virginica virginica virginica
## [145] virginica virginica virginica virginica virginica virginica
## Levels: setosa versicolor virginica
selain "sort", kita dapat pula menggunakan "rev"
rev(iris$Species)
## [1] virginica virginica virginica virginica virginica virginica
## [7] virginica virginica virginica virginica virginica virginica
## [13] virginica virginica virginica virginica virginica virginica
## [19] virginica virginica virginica virginica virginica virginica
## [25] virginica virginica virginica virginica virginica virginica
## [31] virginica virginica virginica virginica virginica virginica
## [37] virginica virginica virginica virginica virginica virginica
## [43] virginica virginica virginica virginica virginica virginica
## [49] virginica virginica versicolor versicolor versicolor versicolor
## [55] versicolor versicolor versicolor versicolor versicolor versicolor
## [61] versicolor versicolor versicolor versicolor versicolor versicolor
## [67] versicolor versicolor versicolor versicolor versicolor versicolor
## [73] versicolor versicolor versicolor versicolor versicolor versicolor
## [79] versicolor versicolor versicolor versicolor versicolor versicolor
## [85] versicolor versicolor versicolor versicolor versicolor versicolor
## [91] versicolor versicolor versicolor versicolor versicolor versicolor
## [97] versicolor versicolor versicolor versicolor setosa setosa
## [103] setosa setosa setosa setosa setosa setosa
## [109] setosa setosa setosa setosa setosa setosa
## [115] setosa setosa setosa setosa setosa setosa
## [121] setosa setosa setosa setosa setosa setosa
## [127] setosa setosa setosa setosa setosa setosa
## [133] setosa setosa setosa setosa setosa setosa
## [139] setosa setosa setosa setosa setosa setosa
## [145] setosa setosa setosa setosa setosa setosa
## Levels: setosa versicolor virginica
Kemudian kita melakukan recoding pada data iris untuk variabel Sepal.Width dengan kondisi jika Sepal.Width kurang dari sama dengan 3 maka diberikan kode = 0, dan lebih dari 3 maka diberikan kode = 1. Dengan menggunakan "logical" diperoleh hasil seperti di bawah ini
iris$code1<-0*(iris$Sepal.Width<=3) + 1*(iris$Sepal.Width>3)
iris$code1
## [1] 1 0 1 1 1 1 1 1 0 1 1 1 0 0 1 1 1 1 1 1 1 1 1 1 1 0 1 1 1 1 1 1 1 1 1 1 1
## [38] 1 0 1 1 0 1 1 1 0 1 1 1 1 1 1 1 0 0 0 1 0 0 0 0 0 0 0 0 1 0 0 0 0 1 0 0 0
## [75] 0 0 0 0 0 0 0 0 0 0 0 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0 0 0 0 0 0 0 0 1 1
## [112] 0 0 0 0 1 0 1 0 0 1 0 0 0 1 1 0 0 0 0 0 1 0 0 0 0 1 1 0 1 1 1 0 1 1 0 0 0
## [149] 1 0
Long to wide data format. dalam mengubah format data frame digunakan fungsi reshape. terdapat 2 argumen yang digunakan yaitu idvar dan timevar. idvar menunjukkan bahwa terdapat minimal 1 baris yang menunjukkan individu yang sama. sedangkan timevar yaitu 1 variabel dalam format wide.
Berikut kita ingin mengubah format data dengan memilih Species dan Petal.Length sebagai argumen idvar dan Petal.Width sebagai argumen timevar.
long.to.wd <-reshape(iris, idvar="Species", timevar="Petal.Width", direction="wide")
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=0.2: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=0.4: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=0.3: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=0.1: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.4: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.5: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.3: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.6: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.1: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.8: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.2: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=2.5: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=1.9: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=2.1: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=2.2: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=2: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=2.4: first taken
## Warning in reshapeWide(data, idvar = idvar, timevar = timevar, varying =
## varying, : multiple rows match for Petal.Width=2.3: first taken
long.to.wd
## Species Sepal.Length.0.2 Sepal.Width.0.2 Petal.Length.0.2 var.baru.0.2
## 1 setosa 5.1 3.5 1.4 0.1
## 51 versicolor NA NA NA NA
## 101 virginica NA NA NA NA
## code1.0.2 Sepal.Length.0.4 Sepal.Width.0.4 Petal.Length.0.4 var.baru.0.4
## 1 1 5.4 3.9 1.7 5.1
## 51 NA NA NA NA NA
## 101 NA NA NA NA NA
## code1.0.4 Sepal.Length.0.3 Sepal.Width.0.3 Petal.Length.0.3 var.baru.0.3
## 1 1 4.6 3.4 1.4 6.1
## 51 NA NA NA NA NA
## 101 NA NA NA NA NA
## code1.0.3 Sepal.Length.0.1 Sepal.Width.0.1 Petal.Length.0.1 var.baru.0.1
## 1 1 4.9 3.1 1.5 9.1
## 51 NA NA NA NA NA
## 101 NA NA NA NA NA
## code1.0.1 Sepal.Length.0.5 Sepal.Width.0.5 Petal.Length.0.5 var.baru.0.5
## 1 1 5.1 3.3 1.7 8.1
## 51 NA NA NA NA NA
## 101 NA NA NA NA NA
## code1.0.5 Sepal.Length.0.6 Sepal.Width.0.6 Petal.Length.0.6 var.baru.0.6
## 1 1 5 3.5 1.6 13.1
## 51 NA NA NA NA NA
## 101 NA NA NA NA NA
## code1.0.6 Sepal.Length.1.4 Sepal.Width.1.4 Petal.Length.1.4 var.baru.1.4
## 1 1 NA NA NA NA
## 51 NA 7.0 3.2 4.7 5.1
## 101 NA 6.1 2.6 5.6 14.1
## code1.1.4 Sepal.Length.1.5 Sepal.Width.1.5 Petal.Length.1.5 var.baru.1.5
## 1 NA NA NA NA NA
## 51 1 6.4 3.2 4.5 6.1
## 101 0 6.0 2.2 5.0 14.1
## code1.1.5 Sepal.Length.1.3 Sepal.Width.1.3 Petal.Length.1.3 var.baru.1.3
## 1 NA NA NA NA NA
## 51 1 5.5 2.3 4 8.1
## 101 0 NA NA NA NA
## code1.1.3 Sepal.Length.1.6 Sepal.Width.1.6 Petal.Length.1.6 var.baru.1.6
## 1 NA NA NA NA NA
## 51 0 6.3 3.3 4.7 11.1
## 101 NA 7.2 3.0 5.8 9.1
## code1.1.6 Sepal.Length.1 Sepal.Width.1 Petal.Length.1 var.baru.1 code1.1
## 1 NA NA NA NA NA NA
## 51 1 4.9 2.4 3.3 12.1 0
## 101 0 NA NA NA NA NA
## Sepal.Length.1.1 Sepal.Width.1.1 Petal.Length.1.1 var.baru.1.1 code1.1.1
## 1 NA NA NA NA NA
## 51 5.6 2.5 3.9 9.1 0
## 101 NA NA NA NA NA
## Sepal.Length.1.8 Sepal.Width.1.8 Petal.Length.1.8 var.baru.1.8 code1.1.8
## 1 NA NA NA NA NA
## 51 5.9 3.2 4.8 10.1 1
## 101 6.3 2.9 5.6 13.1 0
## Sepal.Length.1.2 Sepal.Width.1.2 Petal.Length.1.2 var.baru.1.2 code1.1.2
## 1 NA NA NA NA NA
## 51 6.1 2.8 4.7 13.1 0
## 101 NA NA NA NA NA
## Sepal.Length.1.7 Sepal.Width.1.7 Petal.Length.1.7 var.baru.1.7 code1.1.7
## 1 NA NA NA NA NA
## 51 6.7 3.0 5.0 2.1 0
## 101 4.9 2.5 4.5 1.1 0
## Sepal.Length.2.5 Sepal.Width.2.5 Petal.Length.2.5 var.baru.2.5 code1.2.5
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 6.3 3.3 6 10.1 1
## Sepal.Length.1.9 Sepal.Width.1.9 Petal.Length.1.9 var.baru.1.9 code1.1.9
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 5.8 2.7 5.1 11.1 0
## Sepal.Length.2.1 Sepal.Width.2.1 Petal.Length.2.1 var.baru.2.1 code1.2.1
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 7.1 3 5.9 12.1 0
## Sepal.Length.2.2 Sepal.Width.2.2 Petal.Length.2.2 var.baru.2.2 code1.2.2
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 6.5 3 5.8 14.1 0
## Sepal.Length.2 Sepal.Width.2 Petal.Length.2 var.baru.2 code1.2
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 6.5 3.2 5.1 5.1 1
## Sepal.Length.2.4 Sepal.Width.2.4 Petal.Length.2.4 var.baru.2.4 code1.2.4
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 5.8 2.8 5.1 9.1 0
## Sepal.Length.2.3 Sepal.Width.2.3 Petal.Length.2.3 var.baru.2.3 code1.2.3
## 1 NA NA NA NA NA
## 51 NA NA NA NA NA
## 101 6.4 3.2 5.3 10.1 1
wide to long data format. Dua argumen yang harus digunakan: varying = objek list dari nama variabel dalam format wide v.names = objek vektor dari nama kolom baru dalam format long
wd.to.long <- reshape(long.to.wd,idvar="Species", timevar="Petal.Width",direction="long")
head(wd.to.long)
## Species Petal.Width Sepal.Length.0.2 Sepal.Width.0.2
## setosa.0.2 setosa 0.2 5.1 3.5
## versicolor.0.2 versicolor 0.2 NA NA
## virginica.0.2 virginica 0.2 NA NA
## setosa.0.4 setosa 0.4 5.4 3.9
## versicolor.0.4 versicolor 0.4 NA NA
## virginica.0.4 virginica 0.4 NA NA
## Petal.Length.0.2 var.baru.0.2 code1.0.2
## setosa.0.2 1.4 0.1 1
## versicolor.0.2 NA NA NA
## virginica.0.2 NA NA NA
## setosa.0.4 1.7 5.1 1
## versicolor.0.4 NA NA NA
## virginica.0.4 NA NA NA