This is an R Markdown document. Markdown is a simple formatting syntax for authoring HTML, PDF, and MS Word documents. For more details on using R Markdown see http://rmarkdown.rstudio.com.
When you click the Knit button a document will be generated that includes both content as well as the output of any embedded R code chunks within the document. You can embed an R code chunk like this: ############################################ # Dasar - Dasar R ############################################# ### assignment ### #Assignment adalah suatu cara untuk memberikan value kepada suatu object. Ada beberapa cara #untuk memberikan assign: #1)A <- b #artinya object A akan diisi dengan nilai b #2)b -> A #sama seperti di no 1 yaitu memberikan nilai kepada si A dengan nilai b meskipun tandanya beda #3)A = b #cara lain untuk memberikan assign bisa dengan pake tanda ‘=’ sama aja seperti ‘<-’
A <- 5 #memberikan assign kepada A dengan nilai 5
paste('cara assign 1 = ', A)
## [1] "cara assign 1 = 5"
A = 5 #memberikan assign kepada A dengan nilai 5
paste('cara assign 2 = ', A)
## [1] "cara assign 2 = 5"
5 -> A #memberikan assign kepada A dengan nilai 5
paste('cara assign 3 = ', A)
## [1] "cara assign 3 = 5"
#sebagai tambahan informasi di R ini sangat sensitive misalkan ingin memberikan nilai 5 kepada object A. #maka ketika menuliskan A <- 5 tidak automatis bahwa a kecil akan bernilai 5. Artinya sangat sensitive #terhadap penamaan.
A <- 5
paste('Nilai A = ', A) #nilai A beda dengan a
## [1] "Nilai A = 5"
a <- 10
paste('Nilai a = ', a) #nilai A beda dengan a
## [1] "Nilai a = 10"
#penamaan object diawali dengan huruf (A-z atau a-z) #tidak bisa pake spasi misal jawa Barat <- 10, harus digabung jadi jawa_barat <-10 #terdapat operator yang sudah digunakan misal TRUE, FALSE, NULL, dll tidak bisa dijadikan penamaan object ############################################# # Objek di R. ############################################# #terdapat beberapa objeck di R yaitu Vector, Matrix, Array, Factor, List, and DataFrame.
a1 <- c(2,4,7,3) #cara 1 membuat vector a1
a1
## [1] 2 4 7 3
assign("a2",c("2","4","7","3")) #cara 2 membuat vector a2 tidak perlu di define seperti cara 1
a2
## [1] "2" "4" "7" "3"
#baris bilangan
a3 <- seq(1,10,by=0.5) #cara 3 membuat vector a3 dengan selisih 0.5 dimulai dari 1
a3
## [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
a4 <- seq(1,10,length.out=12) #cara 4 membuat vector a4 dengan jumlah data point sebanyak 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
#bilangan berulang
a5 <- rep(1,3) #cara 5 membuat vector a5 dengan nilai 1 sebanyak 3 kali
a5
## [1] 1 1 1
a6 <- rep(1:3,3) #cara 6 membuat vector a6 dengan nilai 1-3 diulangi sebanyak 3 kali
a6
## [1] 1 2 3 1 2 3 1 2 3
a7 <- rep(1:3,1:3) #cara 7 membuat vector a7 perulangan nilai sesuai dengan posisinya
a7
## [1] 1 2 2 3 3 3
a8 <- rep(1:3,rep(2,3)) #cara 8 membuat vector a8
a8
## [1] 1 1 2 2 3 3
a9 <- rep(1:3,each=2) #cara 9 membuat vector a9 sama seperti a8 dengan setiap nilai diulang 2 kali
a9
## [1] 1 1 2 2 3 3
#karakter berpola
a10 <- paste("A", 1:10, sep="") #cara 10 membuat vector a10
a10
## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
a11 <- paste("A", rep(1:10), sep="") #cara 11 membuat vector a11 seperti cara 10
a11
## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
a12 <- paste0("A",1:10) #cara 12 membuat vector a12
a12
## [1] "A1" "A2" "A3" "A4" "A5" "A6" "A7" "A8" "A9" "A10"
a13 <- paste("A",1:10,sep='-') #cara 13 membuat vector a13
a13
## [1] "A-1" "A-2" "A-3" "A-4" "A-5" "A-6" "A-7" "A-8" "A-9" "A-10"
a14 <- paste0("A",a8) #cara 14 membuat vector a14
a14
## [1] "A1" "A1" "A2" "A2" "A3" "A3"
#akses vector
a2[3] #mengambil value di index ke 3 pada vector a2
## [1] "7"
a3[10:15] #mengambil value di index ke 10 s/d 15 pada vector a3
## [1] 5.5 6.0 6.5 7.0 7.5 8.0
a10[c(4,7,9)] #mengambil value di index ke 4, 7 dan 9 vector a10
## [1] "A4" "A7" "A9"
a13[-c(1:2)] #membuang value di index ke 1 dan 2 pada vector a13
## [1] "A-3" "A-4" "A-5" "A-6" "A-7" "A-8" "A-9" "A-10"
length(a4) #jumlah index pada vector a4
## [1] 12
#latihan 1
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"
#latiahn 2
paste(c("x","y"),1:10,sep='')
## [1] "x1" "y2" "x3" "y4" "x5" "y6" "x7" "y8" "x9" "y10"
seq(1,28,by=3)
## [1] 1 4 7 10 13 16 19 22 25 28
a14 <- 1:12 #membuat matriks baris 1 s/d 12
a14
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
b1 <- matrix(a14,3,4) #membentuk matrix 3 x 4 pake data a14
b1
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
b2 <- matrix(a14,3,4,byrow=TRUE) #sama seperti b1 bedanya diisi baris pertama
b2
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
b3 <- matrix(1:10,4,4) #membentuk matrix 4 x 4 dengan value 1 s/d 10 dimulai dari kolom 1 - kolom ke 4
## Warning in matrix(1:10, 4, 4): data length [10] is not a sub-multiple or
## multiple of the number of rows [4]
b3
## [,1] [,2] [,3] [,4]
## [1,] 1 5 9 3
## [2,] 2 6 10 4
## [3,] 3 7 1 5
## [4,] 4 8 2 6
b4 <- matrix(1:10,4,5) #membentuk matrix 4 x 5 dengan value 1 s/d 10 dimulai dari kolom 1 - kolom ke 5
b4
## [,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
b5 <- a14 #assign matrix baris a14 ke b5
b5
## [1] 1 2 3 4 5 6 7 8 9 10 11 12
dim(b5)<-c(6,2) #merubah objek vector ke matrix
dim(b5)
## [1] 6 2
b6 <- matrix(1:4,2) #membentuk matrix 2 x 2, jika tidak dimasukan nilai satunya
b6
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
b7 <- matrix(6:9,2) #membentuk matrix 2 x 2, jika tidak dimasukan nilai satunya
b7
## [,1] [,2]
## [1,] 6 8
## [2,] 7 9
b8 <- rbind(b6,b7) #gabung baris
b8
## [,1] [,2]
## [1,] 1 3
## [2,] 2 4
## [3,] 6 8
## [4,] 7 9
b9 <- cbind(b7,b6) #gabung kolom
b9
## [,1] [,2] [,3] [,4]
## [1,] 6 8 1 3
## [2,] 7 9 2 4
dim(b8) #dimensi row and col pada matrix b8
## [1] 4 2
dim(b9) #dimensi row and col pada matrix b9
## [1] 2 4
dim(a14) #dimensi row and col pada matrix a14
## NULL
length(b3) #total data pada matrix b3
## [1] 16
#akses matrix
b2
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
b2[2,3] #ambil value di indeks row = 2, col = 3
## [1] 7
b2[2,2:4] #ambil value di indeks row = 2, col = 2,3,4
## [1] 6 7 8
b2[1:2,] #ambil value di indeks row = 1,2, col = semua kolom
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
b2[c(1,3),-2] #ambil value di indeks row = 1 dan 3, col = exclude kolom 2
## [,1] [,2] [,3]
## [1,] 1 3 4
## [2,] 9 11 12
b2[10] #ambil value di row=1, col = 4
## [1] 4
c1 <- array(a14,dim=c(2,2,3))
c1
## , , 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
c2 <- array(a14,dim=c(2,1,2,3))
c2
## , , 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
c3 <- array(a14,dim=c(1,2,4,2))
c3
## , , 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
c4 <- array(a14,dim=c(3,4))
c4
## [,1] [,2] [,3] [,4]
## [1,] 1 4 7 10
## [2,] 2 5 8 11
## [3,] 3 6 9 12
#akses array
c2[,,1,] #lembar 1 dari c2
## [,1] [,2] [,3]
## [1,] 1 5 9
## [2,] 2 6 10
c2[,,,2] #buku ke 2 dari c2
## [,1] [,2]
## [1,] 5 7
## [2,] 6 8
c2[,,1,3] #lembar ke 1 buku ke 3 dari c2
## [1] 9 10
a15 <- c("A","B","AB","O") #membuat vector
a15
## [1] "A" "B" "AB" "O"
d1 <- factor(a15) #transform tipe data ke skala pengukuran nominal
d1
## [1] A B AB O
## Levels: A AB B O
d2 <- factor(a15,levels=c("O","A","B","AB")) #mengubah posisi level
d2
## [1] A B AB O
## Levels: O A B AB
levels(d2) #melihat unique kategorik
## [1] "O" "A" "B" "AB"
a16 <- c("SD","SMP","SMA") #membuat vector
a16
## [1] "SD" "SMP" "SMA"
d3 <- ordered(a16) #transform tipe data ke skala pengukuran ordinal
d3
## [1] SD SMP SMA
## Levels: SD < SMA < SMP
d4 <- ordered(a16, levels=a16)
d4
## [1] SD SMP SMA
## Levels: SD < SMP < SMA
d5 <- factor(a16, levels=a16, ordered=TRUE)
d5
## [1] SD SMP SMA
## Levels: SD < SMP < SMA
levels(d4)
## [1] "SD" "SMP" "SMA"
#akses factor
d1[2] #mengambil indeks ke 2 pada vector d1
## [1] B
## Levels: A AB B O
d4[2:3] #mengambil indeks ke 2 dan 3 pada vector d4
## [1] SMP SMA
## Levels: SD < SMP < SMA
a1; b2; c1; d2 #bisa dikasih tanda ; kalo untuk menampilkan, tidak perlu dibuat per line
## [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
e1 <- list(a1,b2,c1,d2) #membuat sekumpulan assignment menjadi list
e1
## [[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
e2 <- list(vect=a1,mat=b2,array=c1,fac=d2)
e2
## $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
#akses list
e1[[1]]
## [1] 2 4 7 3
e2$fac
## [1] A B AB O
## Levels: O A B AB
e2[2]
## $mat
## [,1] [,2] [,3] [,4]
## [1,] 1 2 3 4
## [2,] 5 6 7 8
## [3,] 9 10 11 12
e1[c(2,4)]
## [[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
dim(e2)
## NULL
length(e2)
## [1] 4
names(e2)
## [1] "vect" "mat" "array" "fac"
a17 <- 11:15
a17
## [1] 11 12 13 14 15
d5 <- factor(LETTERS[6:10])
d5
## [1] F G H I J
## Levels: F G H I J
f1 <- data.frame(d5,a17)
f1
## d5 a17
## 1 F 11
## 2 G 12
## 3 H 13
## 4 I 14
## 5 J 15
#akses data frame
f1[1,2]
## [1] 11
f1[3,]
## d5 a17
## 3 H 13
f1$d5
## [1] F G H I J
## Levels: F G H I J
f1[,"a17"]
## [1] 11 12 13 14 15
colnames(f1)
## [1] "d5" "a17"
str(f1)
## '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
summary(f1)
## 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
#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(c(1:4),each=3),sep="")
kel <- rep(c(1:3),times=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
#======================================================================================= #Manajemen Data Frame #======================================================================================= ### membuat data frame ###
#create vector
id_mhw = paste("id", rep(1:10), sep="")
id_mhw
## [1] "id1" "id2" "id3" "id4" "id5" "id6" "id7" "id8" "id9" "id10"
stat = c(86,87,90,91,92,78,98,77,89,80)
stat
## [1] 86 87 90 91 92 78 98 77 89 80
math = c(79,92,87,87,90,79,92,80,85,82)
math
## [1] 79 92 87 87 90 79 92 80 85 82
#membuat dataframe
data = data.frame(id_mhw, stat, math)
data
## id_mhw stat math
## 1 id1 86 79
## 2 id2 87 92
## 3 id3 90 87
## 4 id4 91 87
## 5 id5 92 90
## 6 id6 78 79
## 7 id7 98 92
## 8 id8 77 80
## 9 id9 89 85
## 10 id10 80 82
#Dilakukan seperti membuat vektor (dengan indeks atau operasi seleksi)
#latihan 1
#Pada data1, buatlah peubah 'baru1' yang berisi nilai dari 12 sampai 1 secara berurutan
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
#import library
library(dplyr)
##
## Attaching package: 'dplyr'
## The following objects are masked from 'package:stats':
##
## filter, lag
## The following objects are masked from 'package:base':
##
## intersect, setdiff, setequal, union
#cara 1
data$paralel = factor(rep(1:2,5))
data
## id_mhw stat math paralel
## 1 id1 86 79 1
## 2 id2 87 92 2
## 3 id3 90 87 1
## 4 id4 91 87 2
## 5 id5 92 90 1
## 6 id6 78 79 2
## 7 id7 98 92 1
## 8 id8 77 80 2
## 9 id9 89 85 1
## 10 id10 80 82 2
#cara 2
cara_2 = data
cara_2[,'pararel1'] <- factor(rep(1:2,5))
cara_2
## id_mhw stat math paralel pararel1
## 1 id1 86 79 1 1
## 2 id2 87 92 2 2
## 3 id3 90 87 1 1
## 4 id4 91 87 2 2
## 5 id5 92 90 1 1
## 6 id6 78 79 2 2
## 7 id7 98 92 1 1
## 8 id8 77 80 2 2
## 9 id9 89 85 1 1
## 10 id10 80 82 2 2
#cara 3
cara_3 <- data %>% mutate('pararel3' = factor(rep(1:2,5)))
cara_3
## id_mhw stat math paralel pararel3
## 1 id1 86 79 1 1
## 2 id2 87 92 2 2
## 3 id3 90 87 1 1
## 4 id4 91 87 2 2
## 5 id5 92 90 1 1
## 6 id6 78 79 2 2
## 7 id7 98 92 1 1
## 8 id8 77 80 2 2
## 9 id9 89 85 1 1
## 10 id10 80 82 2 2
data[nrow(data) + 1,] = c("id11","78", "89", "2")
data
## id_mhw stat math paralel
## 1 id1 86 79 1
## 2 id2 87 92 2
## 3 id3 90 87 1
## 4 id4 91 87 2
## 5 id5 92 90 1
## 6 id6 78 79 2
## 7 id7 98 92 1
## 8 id8 77 80 2
## 9 id9 89 85 1
## 10 id10 80 82 2
## 11 id11 78 89 2
data[nrow(data) + 1,] = c("id12","80", "89", "2")
data
## id_mhw stat math paralel
## 1 id1 86 79 1
## 2 id2 87 92 2
## 3 id3 90 87 1
## 4 id4 91 87 2
## 5 id5 92 90 1
## 6 id6 78 79 2
## 7 id7 98 92 1
## 8 id8 77 80 2
## 9 id9 89 85 1
## 10 id10 80 82 2
## 11 id11 78 89 2
## 12 id12 80 89 2
#dilakukan untuk akses sebagian data #membuat ide logic untuk diterapkan dalam vektor logic yang diinginkan
#latihan 2
#dari data1 tersebut ambillah yang termasuk kelompok 1
data2 <- data1[data1$kel == 1,]
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
#latihan 3
#dari data1 tersebut ambillah yang termasuk kelompok 1 atau perlakuan p2
data3 <- data1[data1$kel == 1 | data1$perl=='P2',]
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
#latihan 4
#dari data1 tersebut ambillah amatan yang respon bilangan prima
data4 <- data1[data1$resp %in% c(2,3,5,7,11,13,17,19,23),]
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
#op ==
# cara 1
indeks1 = data$paralel == 1
indeks1
## [1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
datas1 = data[indeks1,]
datas1
## id_mhw stat math paralel
## 1 id1 86 79 1
## 3 id3 90 87 1
## 5 id5 92 90 1
## 7 id7 98 92 1
## 9 id9 89 85 1
# cara 2
datas1 <- data$paralel==1
data[datas1,]
## id_mhw stat math paralel
## 1 id1 86 79 1
## 3 id3 90 87 1
## 5 id5 92 90 1
## 7 id7 98 92 1
## 9 id9 89 85 1
#op == |
# cara 1
indeks2 = data$stat == 90 | data$math == 90
indeks2
## [1] FALSE FALSE TRUE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE FALSE
datas2 = data[indeks2,]
datas2
## id_mhw stat math paralel
## 3 id3 90 87 1
## 5 id5 92 90 1
# cara 2
datas2 <- data$stat == 90 | data$math == 90
data[datas2,]
## id_mhw stat math paralel
## 3 id3 90 87 1
## 5 id5 92 90 1
#op !=
# cara 1
indeks3 = data$paralel != 2
indeks3
## [1] TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE TRUE FALSE FALSE FALSE
datas3 = data[indeks3,]
datas3
## id_mhw stat math paralel
## 1 id1 86 79 1
## 3 id3 90 87 1
## 5 id5 92 90 1
## 7 id7 98 92 1
## 9 id9 89 85 1
# cara 2
datas3 <- data$paralel != 2
data[datas3,]
## id_mhw stat math paralel
## 1 id1 86 79 1
## 3 id3 90 87 1
## 5 id5 92 90 1
## 7 id7 98 92 1
## 9 id9 89 85 1
#op >=, <=
# cara 1
indeks4 = data$stat >= 80 & data$stat <= 90
indeks4
## [1] TRUE TRUE TRUE FALSE FALSE FALSE FALSE FALSE TRUE TRUE FALSE TRUE
datas4 = data[indeks4,]
datas4
## id_mhw stat math paralel
## 1 id1 86 79 1
## 2 id2 87 92 2
## 3 id3 90 87 1
## 9 id9 89 85 1
## 10 id10 80 82 2
## 12 id12 80 89 2
# cara 2
datas4 <- data$stat >=80 & data$math <=90
data[datas4,]
## id_mhw stat math paralel
## 1 id1 86 79 1
## 3 id3 90 87 1
## 4 id4 91 87 2
## 5 id5 92 90 1
## 9 id9 89 85 1
## 10 id10 80 82 2
## 12 id12 80 89 2
#op %in%
x1 = 1:5
x1
## [1] 1 2 3 4 5
x2 = 1:3
x2
## [1] 1 2 3
x1 %in% x2
## [1] TRUE TRUE TRUE FALSE FALSE
# cara 1
indeks5 = data$stat %in% c(80,85,90,95)
indeks5
## [1] FALSE FALSE TRUE FALSE FALSE FALSE FALSE FALSE FALSE TRUE FALSE TRUE
datas5 = data[indeks5,]
datas5
## id_mhw stat math paralel
## 3 id3 90 87 1
## 10 id10 80 82 2
## 12 id12 80 89 2
# cara 2
datas5 <- data$stat %in% c(80,85,90,95)
data[datas5,]
## id_mhw stat math paralel
## 3 id3 90 87 1
## 10 id10 80 82 2
## 12 id12 80 89 2
#op duplicated
# cara 1
indeks6 = duplicated(data$id_mhw)
datas6 = data[indeks6,]
datas6
## [1] id_mhw stat math paralel
## <0 rows> (or 0-length row.names)
# cara 2
datas6 <- duplicated(data$id_mhw)
data[datas6,]
## [1] id_mhw stat math paralel
## <0 rows> (or 0-length row.names)
#op is,na()
# cara 1
indeks7 = is.na(data$paralel) #cek data kosong di paralel
datas7 = data[indeks7,]
datas7
## [1] id_mhw stat math paralel
## <0 rows> (or 0-length row.names)
#op is,null()
is.null(data) #cek dataframe ada yang null atau tidak
## [1] FALSE
# misal :
data[nrow(data) + 1,] = c("id12","80", "89", "")
## Warning in `[<-.factor`(`*tmp*`, iseq, value = ""): invalid factor level, NA
## generated
data
## id_mhw stat math paralel
## 1 id1 86 79 1
## 2 id2 87 92 2
## 3 id3 90 87 1
## 4 id4 91 87 2
## 5 id5 92 90 1
## 6 id6 78 79 2
## 7 id7 98 92 1
## 8 id8 77 80 2
## 9 id9 89 85 1
## 10 id10 80 82 2
## 11 id11 78 89 2
## 12 id12 80 89 2
## 13 id12 80 89 <NA>
data <- data[-13,]
data
## id_mhw stat math paralel
## 1 id1 86 79 1
## 2 id2 87 92 2
## 3 id3 90 87 1
## 4 id4 91 87 2
## 5 id5 92 90 1
## 6 id6 78 79 2
## 7 id7 98 92 1
## 8 id8 77 80 2
## 9 id9 89 85 1
## 10 id10 80 82 2
## 11 id11 78 89 2
## 12 id12 80 89 2
#dilakukan untuk mengurutkan data berdasarkan beberapa peubah tertentu #dilakukan dengan membuat vektork logika untuk melakukan pengurutan data
#latihan 5
#urutkan data1 tersebut berdasarkan kelompok secara ascending
data5 <- data1[order(data1$kel,decreasing = F),]
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
#latihan 6
#urutkan data1 tersebut berdasarkan kelompok secara descending
data6 <- data1[order(data1$kel,decreasing = T),]
data6
## perl kel resp baru1
## 3 P1 3 5 10
## 6 P2 3 11 7
## 9 P3 3 17 4
## 12 P4 3 23 1
## 2 P1 2 3 11
## 5 P2 2 9 8
## 8 P3 2 15 5
## 11 P4 2 21 2
## 1 P1 1 1 12
## 4 P2 1 7 9
## 7 P3 1 13 6
## 10 P4 1 19 3
#latihan 7
#urutkan data1 tersebut berdasarkan kelompok secara ascending dan respon secara descending
data7 <- data1[order(data1$resp,decreasing = T),]
data7
## perl kel resp baru1
## 12 P4 3 23 1
## 11 P4 2 21 2
## 10 P4 1 19 3
## 9 P3 3 17 4
## 8 P3 2 15 5
## 7 P3 1 13 6
## 6 P2 3 11 7
## 5 P2 2 9 8
## 4 P2 1 7 9
## 3 P1 3 5 10
## 2 P1 2 3 11
## 1 P1 1 1 12
data8 <- data7[order(data7$kel,decreasing = F),] #order by kelompok
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
#temp table
datas2 <- data
datas2$segment <- c('high','low','low','high','med','med','low','high','med','low','high','low')
datas2$gender <- c('M','M','M','F','F','M','F','F','F','M','F','F')
datas2
## id_mhw stat math paralel segment gender
## 1 id1 86 79 1 high M
## 2 id2 87 92 2 low M
## 3 id3 90 87 1 low M
## 4 id4 91 87 2 high F
## 5 id5 92 90 1 med F
## 6 id6 78 79 2 med M
## 7 id7 98 92 1 low F
## 8 id8 77 80 2 high F
## 9 id9 89 85 1 med F
## 10 id10 80 82 2 low M
## 11 id11 78 89 2 high F
## 12 id12 80 89 2 low F
# order()
# Simple
datas2
## id_mhw stat math paralel segment gender
## 1 id1 86 79 1 high M
## 2 id2 87 92 2 low M
## 3 id3 90 87 1 low M
## 4 id4 91 87 2 high F
## 5 id5 92 90 1 med F
## 6 id6 78 79 2 med M
## 7 id7 98 92 1 low F
## 8 id8 77 80 2 high F
## 9 id9 89 85 1 med F
## 10 id10 80 82 2 low M
## 11 id11 78 89 2 high F
## 12 id12 80 89 2 low F
datas2[order(datas2$stat),]
## id_mhw stat math paralel segment gender
## 8 id8 77 80 2 high F
## 6 id6 78 79 2 med M
## 11 id11 78 89 2 high F
## 10 id10 80 82 2 low M
## 12 id12 80 89 2 low F
## 1 id1 86 79 1 high M
## 2 id2 87 92 2 low M
## 9 id9 89 85 1 med F
## 3 id3 90 87 1 low M
## 4 id4 91 87 2 high F
## 5 id5 92 90 1 med F
## 7 id7 98 92 1 low F
# rumit
datas2[
order(datas2$segment,
(datas2$gender=='M')*as.numeric(datas2$stat),
(datas2$gender=='F')*as.numeric(datas2$math)
),
] %>% select(segment, gender, stat, math)
## segment gender stat math
## 8 high F 77 80
## 4 high F 91 87
## 11 high F 78 89
## 1 high M 86 79
## 12 low F 80 89
## 7 low F 98 92
## 10 low M 80 82
## 2 low M 87 92
## 3 low M 90 87
## 9 med F 89 85
## 5 med F 92 90
## 6 med M 78 79
#rank
datas2
## id_mhw stat math paralel segment gender
## 1 id1 86 79 1 high M
## 2 id2 87 92 2 low M
## 3 id3 90 87 1 low M
## 4 id4 91 87 2 high F
## 5 id5 92 90 1 med F
## 6 id6 78 79 2 med M
## 7 id7 98 92 1 low F
## 8 id8 77 80 2 high F
## 9 id9 89 85 1 med F
## 10 id10 80 82 2 low M
## 11 id11 78 89 2 high F
## 12 id12 80 89 2 low F
rank(datas2$stat)
## [1] 6.0 7.0 9.0 10.0 11.0 2.5 12.0 1.0 8.0 4.5 2.5 4.5
datas2$rank = rank(datas2$stat)
datas2[order(datas2$rank),]
## id_mhw stat math paralel segment gender rank
## 8 id8 77 80 2 high F 1.0
## 6 id6 78 79 2 med M 2.5
## 11 id11 78 89 2 high F 2.5
## 10 id10 80 82 2 low M 4.5
## 12 id12 80 89 2 low F 4.5
## 1 id1 86 79 1 high M 6.0
## 2 id2 87 92 2 low M 7.0
## 9 id9 89 85 1 med F 8.0
## 3 id3 90 87 1 low M 9.0
## 4 id4 91 87 2 high F 10.0
## 5 id5 92 90 1 med F 11.0
## 7 id7 98 92 1 low F 12.0
#sort - mengurutkan
sort(datas2$stat)
## [1] "77" "78" "78" "80" "80" "86" "87" "89" "90" "91" "92" "98"
x3 <- c(2,4,3,2,7,8) # untuk vektor berlaku
sort(x3)
## [1] 2 2 3 4 7 8
datas2[sort(datas2$stat),] # >>>>>>>>> untuk data frame tidak berlaku
## id_mhw stat math paralel segment gender rank
## NA <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.1 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.2 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.3 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.4 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.5 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.6 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.7 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.8 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.9 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.10 <NA> <NA> <NA> <NA> <NA> <NA> NA
## NA.11 <NA> <NA> <NA> <NA> <NA> <NA> NA
#which - mengurutkan indek bernilai true
which(LETTERS == 'Z')
## [1] 26
datas2
## id_mhw stat math paralel segment gender rank
## 1 id1 86 79 1 high M 6.0
## 2 id2 87 92 2 low M 7.0
## 3 id3 90 87 1 low M 9.0
## 4 id4 91 87 2 high F 10.0
## 5 id5 92 90 1 med F 11.0
## 6 id6 78 79 2 med M 2.5
## 7 id7 98 92 1 low F 12.0
## 8 id8 77 80 2 high F 1.0
## 9 id9 89 85 1 med F 8.0
## 10 id10 80 82 2 low M 4.5
## 11 id11 78 89 2 high F 2.5
## 12 id12 80 89 2 low F 4.5
which(datas2$stat==80)
## [1] 10 12
datas2[which(datas2$stat==80),]
## id_mhw stat math paralel segment gender rank
## 10 id10 80 82 2 low M 4.5
## 12 id12 80 89 2 low F 4.5
#rev - mengurutkan kebalikan
datas2$id_mhw #vector
## [1] "id1" "id2" "id3" "id4" "id5" "id6" "id7" "id8" "id9" "id10"
## [11] "id11" "id12"
rev(datas2$id_mhw) #vector
## [1] "id12" "id11" "id10" "id9" "id8" "id7" "id6" "id5" "id4" "id3"
## [11] "id2" "id1"
datas2 #df
## id_mhw stat math paralel segment gender rank
## 1 id1 86 79 1 high M 6.0
## 2 id2 87 92 2 low M 7.0
## 3 id3 90 87 1 low M 9.0
## 4 id4 91 87 2 high F 10.0
## 5 id5 92 90 1 med F 11.0
## 6 id6 78 79 2 med M 2.5
## 7 id7 98 92 1 low F 12.0
## 8 id8 77 80 2 high F 1.0
## 9 id9 89 85 1 med F 8.0
## 10 id10 80 82 2 low M 4.5
## 11 id11 78 89 2 high F 2.5
## 12 id12 80 89 2 low F 4.5
rev(datas2) #mengurutkan data berdasarkan kolom secara terbalik df
## rank gender segment paralel math stat id_mhw
## 1 6.0 M high 1 79 86 id1
## 2 7.0 M low 2 92 87 id2
## 3 9.0 M low 1 87 90 id3
## 4 10.0 F high 2 87 91 id4
## 5 11.0 F med 1 90 92 id5
## 6 2.5 M med 2 79 78 id6
## 7 12.0 F low 1 92 98 id7
## 8 1.0 F high 2 80 77 id8
## 9 8.0 F med 1 85 89 id9
## 10 4.5 M low 2 82 80 id10
## 11 2.5 F high 2 89 78 id11
## 12 4.5 F low 2 89 80 id12
datas2
## id_mhw stat math paralel segment gender rank
## 1 id1 86 79 1 high M 6.0
## 2 id2 87 92 2 low M 7.0
## 3 id3 90 87 1 low M 9.0
## 4 id4 91 87 2 high F 10.0
## 5 id5 92 90 1 med F 11.0
## 6 id6 78 79 2 med M 2.5
## 7 id7 98 92 1 low F 12.0
## 8 id8 77 80 2 high F 1.0
## 9 id9 89 85 1 med F 8.0
## 10 id10 80 82 2 low M 4.5
## 11 id11 78 89 2 high F 2.5
## 12 id12 80 89 2 low F 4.5
datas2[rev(rownames(datas2)),] #mengurutkan data berdasarkan row
## id_mhw stat math paralel segment gender rank
## 12 id12 80 89 2 low F 4.5
## 11 id11 78 89 2 high F 2.5
## 10 id10 80 82 2 low M 4.5
## 9 id9 89 85 1 med F 8.0
## 8 id8 77 80 2 high F 1.0
## 7 id7 98 92 1 low F 12.0
## 6 id6 78 79 2 med M 2.5
## 5 id5 92 90 1 med F 11.0
## 4 id4 91 87 2 high F 10.0
## 3 id3 90 87 1 low M 9.0
## 2 id2 87 92 2 low M 7.0
## 1 id1 86 79 1 high M 6.0
#unique cari lagi
x <- unique(data$id_mhw) #select id_mhw biar ga double
x
## [1] "id1" "id2" "id3" "id4" "id5" "id6" "id7" "id8" "id9" "id10"
## [11] "id11" "id12"
#digunakan untuk membuat nilai baru dari nilai peubah yang sudah ada #dapat dilakukan secara logical, fungi ifelse(), recode(), dan fungsi lainnya
#latihan8
#lakukanlah recoding pada data8 untuk variable respon dengan kondisi jika respon<15, maka
#code=1,selainnya code = 0
library(car)
## Loading required package: carData
##
## Attaching package: 'car'
## The following object is masked from 'package:dplyr':
##
## recode
data8$code3 <- recode(data8$resp,'1:14=1; else=0')
data8
## perl kel resp baru1 code3
## 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
#logical
data$code1 = 1*(data$stat>=85) + 0*(data$stat<85)
data
## id_mhw stat math paralel code1
## 1 id1 86 79 1 1
## 2 id2 87 92 2 1
## 3 id3 90 87 1 1
## 4 id4 91 87 2 1
## 5 id5 92 90 1 1
## 6 id6 78 79 2 0
## 7 id7 98 92 1 1
## 8 id8 77 80 2 0
## 9 id9 89 85 1 1
## 10 id10 80 82 2 0
## 11 id11 78 89 2 0
## 12 id12 80 89 2 0
#if
new_segment <- matrix(nrow=length(datas2$segment),ncol=1)
new_segment
## [,1]
## [1,] NA
## [2,] NA
## [3,] NA
## [4,] NA
## [5,] NA
## [6,] NA
## [7,] NA
## [8,] NA
## [9,] NA
## [10,] NA
## [11,] NA
## [12,] NA
for (i in 1:nrow(datas2)){
x <- datas2[i,'segment']
if (x=='high'){new_segment[i] = 'h'}
else if (x=='med'){new_segment[i]='m'}else{new_segment[i]='l'}
}
datas2$if_segment <- new_segment
datas2
## id_mhw stat math paralel segment gender rank if_segment
## 1 id1 86 79 1 high M 6.0 h
## 2 id2 87 92 2 low M 7.0 l
## 3 id3 90 87 1 low M 9.0 l
## 4 id4 91 87 2 high F 10.0 h
## 5 id5 92 90 1 med F 11.0 m
## 6 id6 78 79 2 med M 2.5 m
## 7 id7 98 92 1 low F 12.0 l
## 8 id8 77 80 2 high F 1.0 h
## 9 id9 89 85 1 med F 8.0 m
## 10 id10 80 82 2 low M 4.5 l
## 11 id11 78 89 2 high F 2.5 h
## 12 id12 80 89 2 low F 4.5 l
#switch
new_gender <- matrix(nrow=length(datas2$gender),ncol=1)
new_gender
## [,1]
## [1,] NA
## [2,] NA
## [3,] NA
## [4,] NA
## [5,] NA
## [6,] NA
## [7,] NA
## [8,] NA
## [9,] NA
## [10,] NA
## [11,] NA
## [12,] NA
for (i in 1:nrow(datas2)){
x <- datas2[i,'gender']
new_gender[i] <- switch(x,"M" = "Male","F" = "Female")
}
datas2$switch_gender <- new_gender
datas2
## id_mhw stat math paralel segment gender rank if_segment switch_gender
## 1 id1 86 79 1 high M 6.0 h Male
## 2 id2 87 92 2 low M 7.0 l Male
## 3 id3 90 87 1 low M 9.0 l Male
## 4 id4 91 87 2 high F 10.0 h Female
## 5 id5 92 90 1 med F 11.0 m Female
## 6 id6 78 79 2 med M 2.5 m Male
## 7 id7 98 92 1 low F 12.0 l Female
## 8 id8 77 80 2 high F 1.0 h Female
## 9 id9 89 85 1 med F 8.0 m Female
## 10 id10 80 82 2 low M 4.5 l Male
## 11 id11 78 89 2 high F 2.5 h Female
## 12 id12 80 89 2 low F 4.5 l Female
#ifels
data$code2 = ifelse(data$stat>85,"GOOD","NOT BAD")
data
## id_mhw stat math paralel code1 code2
## 1 id1 86 79 1 1 GOOD
## 2 id2 87 92 2 1 GOOD
## 3 id3 90 87 1 1 GOOD
## 4 id4 91 87 2 1 GOOD
## 5 id5 92 90 1 1 GOOD
## 6 id6 78 79 2 0 NOT BAD
## 7 id7 98 92 1 1 GOOD
## 8 id8 77 80 2 0 NOT BAD
## 9 id9 89 85 1 1 GOOD
## 10 id10 80 82 2 0 NOT BAD
## 11 id11 78 89 2 0 NOT BAD
## 12 id12 80 89 2 0 NOT BAD
#recode
library(tidyverse)
## -- Attaching packages --------------------------------------- tidyverse 1.3.1 --
## v ggplot2 3.3.5 v purrr 0.3.4
## v tibble 3.1.3 v stringr 1.4.0
## v tidyr 1.1.3 v forcats 0.5.1
## v readr 2.0.1
## -- Conflicts ------------------------------------------ tidyverse_conflicts() --
## x dplyr::filter() masks stats::filter()
## x dplyr::lag() masks stats::lag()
## x car::recode() masks dplyr::recode()
## x purrr::some() masks car::some()
data$code4 <- recode_factor(data$code2, 'GOOD' = 1, 'NOT BAD' = 0)
#case_when()
data$case_when <- case_when((data$stat > 78) ~ "high",TRUE ~ "unknown")
data
## id_mhw stat math paralel code1 code2 code4 case_when
## 1 id1 86 79 1 1 GOOD 1 high
## 2 id2 87 92 2 1 GOOD 1 high
## 3 id3 90 87 1 1 GOOD 1 high
## 4 id4 91 87 2 1 GOOD 1 high
## 5 id5 92 90 1 1 GOOD 1 high
## 6 id6 78 79 2 0 NOT BAD 0 unknown
## 7 id7 98 92 1 1 GOOD 1 high
## 8 id8 77 80 2 0 NOT BAD 0 unknown
## 9 id9 89 85 1 1 GOOD 1 high
## 10 id10 80 82 2 0 NOT BAD 0 high
## 11 id11 78 89 2 0 NOT BAD 0 unknown
## 12 id12 80 89 2 0 NOT BAD 0 high
#bisa dilakukan denga rbind atau cbind #lebih mudah dengan fungsi merge
#latihan 9
#gunakanlah data1 dengan tabel1 berdasarkan peubah pertamanya
tabel1 <- data.frame(tr=c("p4","p2","p5"),k1=c(50,100,200))
data9 <- merge(data1,tabel1, by.x = 1, by.y = 1, all = F)
data9
## [1] perl kel resp baru1 k1
## <0 rows> (or 0-length row.names)
data10 <- merge(data1,tabel1, by.x = 'perl', by.y = 'tr', all = T)
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 NA NA NA 100
## 5 P2 1 7 9 NA
## 6 P2 2 9 8 NA
## 7 P2 3 11 7 NA
## 8 P3 1 13 6 NA
## 9 P3 2 15 5 NA
## 10 P3 3 17 4 NA
## 11 p4 NA NA NA 50
## 12 P4 1 19 3 NA
## 13 P4 2 21 2 NA
## 14 P4 3 23 1 NA
## 15 p5 NA NA NA 200
#data sampel
datas1 = c(1,2,3)
datas1
## [1] 1 2 3
datas2 = c(4,5,6)
datas2
## [1] 4 5 6
cbind(datas1,datas2) #digunakan untuk menggabungkan kolomOutput
## datas1 datas2
## [1,] 1 4
## [2,] 2 5
## [3,] 3 6
rbind(datas1,datas2) #digunakan untuk menggabungkan barisOutput
## [,1] [,2] [,3]
## datas1 1 2 3
## datas2 4 5 6
#tabel product
id_cust = paste("ID", rep(120:129), sep="")
id_cust
## [1] "ID120" "ID121" "ID122" "ID123" "ID124" "ID125" "ID126" "ID127" "ID128"
## [10] "ID129"
product = paste("barang",11:20,sep=" ")
product
## [1] "barang 11" "barang 12" "barang 13" "barang 14" "barang 15" "barang 16"
## [7] "barang 17" "barang 18" "barang 19" "barang 20"
tabel_product = data.frame(id_cust, product)
tabel_product
## id_cust product
## 1 ID120 barang 11
## 2 ID121 barang 12
## 3 ID122 barang 13
## 4 ID123 barang 14
## 5 ID124 barang 15
## 6 ID125 barang 16
## 7 ID126 barang 17
## 8 ID127 barang 18
## 9 ID128 barang 19
## 10 ID129 barang 20
#tabel daerah
id_cust = c("ID122", "ID126", "ID128", "ID129", "ID130", "ID133", "ID135")
id_cust
## [1] "ID122" "ID126" "ID128" "ID129" "ID130" "ID133" "ID135"
asal = paste("Kota",1:7,sep="-")
asal
## [1] "Kota-1" "Kota-2" "Kota-3" "Kota-4" "Kota-5" "Kota-6" "Kota-7"
tabel_daerah = data.frame(id_cust, asal)
tabel_daerah
## id_cust asal
## 1 ID122 Kota-1
## 2 ID126 Kota-2
## 3 ID128 Kota-3
## 4 ID129 Kota-4
## 5 ID130 Kota-5
## 6 ID133 Kota-6
## 7 ID135 Kota-7
#LEFT JOIN
datas8 = merge(x=tabel_product,y=tabel_daerah,by="id_cust",all.x=TRUE)
datas8
## id_cust product asal
## 1 ID120 barang 11 <NA>
## 2 ID121 barang 12 <NA>
## 3 ID122 barang 13 Kota-1
## 4 ID123 barang 14 <NA>
## 5 ID124 barang 15 <NA>
## 6 ID125 barang 16 <NA>
## 7 ID126 barang 17 Kota-2
## 8 ID127 barang 18 <NA>
## 9 ID128 barang 19 Kota-3
## 10 ID129 barang 20 Kota-4
#INNER JOIN
datas9 = merge(x=tabel_product,y=tabel_daerah,by="id_cust", all=FALSE)
datas9
## id_cust product asal
## 1 ID122 barang 13 Kota-1
## 2 ID126 barang 17 Kota-2
## 3 ID128 barang 19 Kota-3
## 4 ID129 barang 20 Kota-4
#RIGHT JOIN
datas11 = merge(x=tabel_product,y=tabel_daerah,by="id_cust",all.y=TRUE)
datas11
## id_cust product asal
## 1 ID122 barang 13 Kota-1
## 2 ID126 barang 17 Kota-2
## 3 ID128 barang 19 Kota-3
## 4 ID129 barang 20 Kota-4
## 5 ID130 <NA> Kota-5
## 6 ID133 <NA> Kota-6
## 7 ID135 <NA> Kota-7
#OUTER JOIN
datas12 = merge(x=tabel_product,y=tabel_daerah,by="id_cust",all=TRUE)
datas12
## id_cust product asal
## 1 ID120 barang 11 <NA>
## 2 ID121 barang 12 <NA>
## 3 ID122 barang 13 Kota-1
## 4 ID123 barang 14 <NA>
## 5 ID124 barang 15 <NA>
## 6 ID125 barang 16 <NA>
## 7 ID126 barang 17 Kota-2
## 8 ID127 barang 18 <NA>
## 9 ID128 barang 19 Kota-3
## 10 ID129 barang 20 Kota-4
## 11 ID130 <NA> Kota-5
## 12 ID133 <NA> Kota-6
## 13 ID135 <NA> Kota-7
#Membentuk data baru dengan cara:1) long to wide, 2) wide to long #Menggunakan fungsi reshape()
#latihan 10
#ubahlah data1 menjadi data dengan setiap barisnya merupakan masing-masing perlakuan
#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
#long to wide
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
#create dataframe
kota = c("Manado", "Jakarta", "Bandung")
bekerja = c("23400","56700","34500")
tidak_kerja = c("10000","30000","12000")
tabel = data.frame(kota, bekerja, tidak_kerja)
colnames(tabel)<- c("Nama Kota","Bekerja","Tidak Bekerja")
tabel
## Nama Kota Bekerja Tidak Bekerja
## 1 Manado 23400 10000
## 2 Jakarta 56700 30000
## 3 Bandung 34500 12000
#wide to long -> data frame diurutkan by varying (harus gunakan varying dan v.names)
widetolong<- reshape(tabel,idvar="Nama Kota",
varying = c("Bekerja","Tidak Bekerja"),
v.name=c("value"),
times=c("Bekerja","Tidak Bekerja"),
new.row.names = 1:100,
direction="long")
widetolong
## Nama Kota time value
## 1 Manado Bekerja 23400
## 2 Jakarta Bekerja 56700
## 3 Bandung Bekerja 34500
## 4 Manado Tidak Bekerja 10000
## 5 Jakarta Tidak Bekerja 30000
## 6 Bandung Tidak Bekerja 12000
# long to wide -> harus ada nama kolom buat idvar dan v.names
longtowide <- reshape(widetolong, idvar="Nama Kota",
v.names = "value",
timevar = "time",
direction="wide")
longtowide
## Nama Kota value.Bekerja value.Tidak Bekerja
## 1 Manado 23400 10000
## 2 Jakarta 56700 30000
## 3 Bandung 34500 12000
summary(cars)
## speed dist
## Min. : 4.0 Min. : 2.00
## 1st Qu.:12.0 1st Qu.: 26.00
## Median :15.0 Median : 36.00
## Mean :15.4 Mean : 42.98
## 3rd Qu.:19.0 3rd Qu.: 56.00
## Max. :25.0 Max. :120.00
You can also embed plots, for example:
Note that the echo = FALSE parameter was added to the code chunk to prevent printing of the R code that generated the plot.