<- 2 A
1 Basics of R
1.1 Introduction
# Print A A
[1] 2
= 2
A A
[1] 2
<- "Halo Semua"
B B
[1] "Halo Semua"
<-10 # Space is not sensitive but lettercase is sensitive.
a A
[1] 2
a
[1] 10
# Arithmetic operation
<- 5
x <- 3
y + y x
[1] 8
- y x
[1] 2
* y x
[1] 15
/ y x
[1] 1.666667
# Logic operation
<- TRUE
a <- FALSE
b & b a
[1] FALSE
| b a
[1] TRUE
!a
[1] FALSE
<- 5
x <- 3
y > y x
[1] TRUE
< y x
[1] FALSE
== y x
[1] FALSE
>= y x
[1] TRUE
<= y x
[1] FALSE
1.2 Types of Objects in R
1.2.1 Vector
<- c(2,4,7,3) # Numeric vector
a1 <- c("one","two","three") # Character vector
a2 <- c(TRUE,TRUE,TRUE,FALSE,TRUE,FALSE) # Logical vector a3
a1
[1] 2 4 7 3
4] a3[
[1] FALSE
c(1,3)] a2[
[1] "one" "three"
-1] a1[
[1] 4 7 3
2:4] a1[
[1] 4 7 3
<- c(1, 2, 3)
a <- c(4, 5, 6)
b <- c(a, b)
c c
[1] 1 2 3 4 5 6
1:3] c[
[1] 1 2 3
<- a + b
d d
[1] 5 7 9
<- 1:12
a4 <- matrix(a4,3,4)
b1 <- matrix(a4,3,4,byrow=TRUE)
b2 <- matrix(1:14,4,4) b3
Warning in matrix(1:14, 4, 4): data length [14] is not a sub-multiple or
multiple of the number of rows [4]
b1
[,1] [,2] [,3] [,4]
[1,] 1 4 7 10
[2,] 2 5 8 11
[3,] 3 6 9 12
b2
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
b3
[,1] [,2] [,3] [,4]
[1,] 1 5 9 13
[2,] 2 6 10 14
[3,] 3 7 11 1
[4,] 4 8 12 2
2,3] b2[
[1] 7
1:2,] b2[
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
c(1,3),-2] b2[
[,1] [,2] [,3]
[1,] 1 3 4
[2,] 9 11 12
dim(b2)
[1] 3 4
<- matrix(c(1, 2, 3, 4, 5, 6), nrow = 2, ncol = 3)
m1 <- matrix(c(7, 8, 9, 10, 11, 12), nrow = 2, ncol = 3) m2
<- m1 + m2
m3 m3
[,1] [,2] [,3]
[1,] 8 12 16
[2,] 10 14 18
<- m1 %*% t(m2)
m4 m4
[,1] [,2]
[1,] 89 98
[2,] 116 128
1.2.2 Factor
<- c("A","B","AB","O")
a5 <- factor(a5)
d1 levels(d1)
[1] "A" "AB" "B" "O"
levels(d1) <- c("Darah A","Darah AB","Darah B","Darah O")
d1
[1] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
<- c("SMA","SD","SMP","SMA","SMA","SMA","SMA","SMA","SMA","SMA","SMA","SMA","SMA")
a6 <- factor(a6, levels=c("SD","SMP","SMA")) # Skala pengukuran ordinal
d5 levels(d5)
[1] "SD" "SMP" "SMA"
d5
[1] SMA SD SMP SMA SMA SMA SMA SMA SMA SMA SMA SMA SMA
Levels: SD SMP SMA
1.2.3 List
a1; b2; d1
[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] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
<- list(a1,b2,d1)
e1 <- list(vect=a1,mat=b2,fac=d1)
e2 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] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
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
$fac
[1] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
1]][2] e1[[
[1] 4
$fac e2
[1] Darah A Darah B Darah AB Darah O
Levels: Darah A Darah AB Darah B Darah O
2] e2[
$mat
[,1] [,2] [,3] [,4]
[1,] 1 2 3 4
[2,] 5 6 7 8
[3,] 9 10 11 12
names(e2)
[1] "vect" "mat" "fac"
1.2.4 Data Frame
<- 11:15
Angka <- factor(LETTERS[6:10])
Huruf <- data.frame(Angka,Huruf)
f1 f1
Angka Huruf
1 11 F
2 12 G
3 13 H
4 14 I
5 15 J
1,2] f1[
[1] F
Levels: F G H I J
$Angka f1
[1] 11 12 13 14 15
"Huruf"] f1[,
[1] F G H I J
Levels: F G H I J
colnames(f1)
[1] "Angka" "Huruf"
str(f1)
'data.frame': 5 obs. of 2 variables:
$ Angka: int 11 12 13 14 15
$ Huruf: Factor w/ 5 levels "F","G","H","I",..: 1 2 3 4 5
1.3 Data Frame Management
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
tail(iris)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
145 6.7 3.3 5.7 2.5 virginica
146 6.7 3.0 5.2 2.3 virginica
147 6.3 2.5 5.0 1.9 virginica
148 6.5 3.0 5.2 2.0 virginica
149 6.2 3.4 5.4 2.3 virginica
150 5.9 3.0 5.1 1.8 virginica
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 ...
1.3.1 R Package
# install.packages("readxl") - code to install R package
library(readxl)
#install.packages("dplyr")
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
1.3.2 Data Management With dplyr
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
<- mutate(iris, sepal2 = Sepal.Length + Sepal.Width) irisbaru
head(irisbaru)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species sepal2
1 5.1 3.5 1.4 0.2 setosa 8.6
2 4.9 3.0 1.4 0.2 setosa 7.9
3 4.7 3.2 1.3 0.2 setosa 7.9
4 4.6 3.1 1.5 0.2 setosa 7.7
5 5.0 3.6 1.4 0.2 setosa 8.6
6 5.4 3.9 1.7 0.4 setosa 9.3
<- filter(iris, Species=="setosa")
irisetosa head(irisetosa)
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
levels(iris$Species)
[1] "setosa" "versicolor" "virginica"
<- filter(iris, Species=="setosa"& Petal.Length==1.3)
irisversicolor head(irisversicolor)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 4.7 3.2 1.3 0.2 setosa
2 5.4 3.9 1.3 0.4 setosa
3 5.5 3.5 1.3 0.2 setosa
4 4.4 3.0 1.3 0.2 setosa
5 5.0 3.5 1.3 0.3 setosa
6 4.5 2.3 1.3 0.3 setosa
<- select(iris, Sepal.Length, Species)
iris3 head(iris3)
Sepal.Length Species
1 5.1 setosa
2 4.9 setosa
3 4.7 setosa
4 4.6 setosa
5 5.0 setosa
6 5.4 setosa
<- arrange(iris, Petal.Width)
iris4 head(iris4)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 4.9 3.1 1.5 0.1 setosa
2 4.8 3.0 1.4 0.1 setosa
3 4.3 3.0 1.1 0.1 setosa
4 5.2 4.1 1.5 0.1 setosa
5 4.9 3.6 1.4 0.1 setosa
6 5.1 3.5 1.4 0.2 setosa
<- arrange(iris, Species, desc(Petal.Width))
iris4 head(iris4)
Sepal.Length Sepal.Width Petal.Length Petal.Width Species
1 5.0 3.5 1.6 0.6 setosa
2 5.1 3.3 1.7 0.5 setosa
3 5.4 3.9 1.7 0.4 setosa
4 5.7 4.4 1.5 0.4 setosa
5 5.4 3.9 1.3 0.4 setosa
6 5.1 3.7 1.5 0.4 setosa
names(iris4)[1] <- "length"
head(iris4)
length Sepal.Width Petal.Length Petal.Width Species
1 5.0 3.5 1.6 0.6 setosa
2 5.1 3.3 1.7 0.5 setosa
3 5.4 3.9 1.7 0.4 setosa
4 5.7 4.4 1.5 0.4 setosa
5 5.4 3.9 1.3 0.4 setosa
6 5.1 3.7 1.5 0.4 setosa
head(iris4[,c(-1,-3)])
Sepal.Width Petal.Width Species
1 3.5 0.6 setosa
2 3.3 0.5 setosa
3 3.9 0.4 setosa
4 4.4 0.4 setosa
5 3.9 0.4 setosa
6 3.7 0.4 setosa
%>% group_by(Species) %>% summarise(rata2_Sepal.Width = mean(Sepal.Width)) iris
# A tibble: 3 × 2
Species rata2_Sepal.Width
<fct> <dbl>
1 setosa 3.43
2 versicolor 2.77
3 virginica 2.97
1.4 Visualization
1.4.1 Histogram
hist(iris$Sepal.Length)
1.4.2 Box Plot
boxplot(iris$Sepal.Length)
1.4.3 Barplot
table(iris$Species)
setosa versicolor virginica
50 50 50
barplot(table(iris$Species))
1.4.4 Pie Chart
pie(table(iris$Species))
1.4.5 Scatter Plot
plot(iris$Sepal.Length,iris$Sepal.Width)
plot(iris$Sepal.Length, iris$Sepal.Width, main = "Sepal Length vs. Sepal Width",
xlab = "Sepal Length", ylab = "Sepal Width", col = "red")