Manipulasi data frame
Salah satu kelas variabel di R adalah data frame. Kelas ini yang sering digunakan untuk dianalisis. Misalnya data iris
dari paket base
.
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
class(iris)
## [1] "data.frame"
Ambil sebagian kolom
Data yang digunakan hanya kolom pertama (Sepal.Length) dan ketiga (Petal.Length) saja. Jika data ini diplotkan dan dibuat garis regresi diperoleh:
library(ggplot2)
iris2 <- iris[,c(1,3,5)]
ggplot(data = iris2, aes(x= Sepal.Length, y = Petal.Length)) +
geom_point() +
stat_smooth(method = "lm")
Operasi pada kolom
Nilai Petal.Length dapat ditransformasi menggunakan logarithma kemudian diplotkan terhadap Sepal.Length. Nilai Petal.Length yang ditransformasi ini ditempatkan pada kolom yang baru dengan nama misalnya log.Petal.
iris2$log.Petal <- log(iris2$Petal.Length)
head(iris2)
## Sepal.Length Petal.Length Species log.Petal
## 1 5.1 1.4 setosa 0.3364722
## 2 4.9 1.4 setosa 0.3364722
## 3 4.7 1.3 setosa 0.2623643
## 4 4.6 1.5 setosa 0.4054651
## 5 5.0 1.4 setosa 0.3364722
## 6 5.4 1.7 setosa 0.5306283
Kemudian plot dari variabel tertransformasi ini adalah
ggplot(data = iris2, aes(x= Sepal.Length, y = log.Petal)) +
geom_point() +
stat_smooth(method = "lm")
Penggunaan paket dplyr
Fungis pada paket dplyr
untuk manipulasi data frame
berbeda dengan fungsi pada paket base
. Misalnya untuk menambah variabel menggunakan fungsi mutate
.
library(dplyr)
irisdplyr <- iris[,c(1,3,5)]
irisdplyr <- mutate(irisdplyr, log.Petal = log(Petal.Length))
head(irisdplyr)
## Sepal.Length Petal.Length Species log.Petal
## 1 5.1 1.4 setosa 0.3364722
## 2 4.9 1.4 setosa 0.3364722
## 3 4.7 1.3 setosa 0.2623643
## 4 4.6 1.5 setosa 0.4054651
## 5 5.0 1.4 setosa 0.3364722
## 6 5.4 1.7 setosa 0.5306283
Pada paket dplyr
operasi data frame dapat menggunakan operasi pipe (%>%) yang diimpor dari paket magrittr
. Misalnya penambahan variabel log.Petal2
.
irisdplyr <- irisdplyr %>%
mutate(log.Petal2 = log(Petal.Length))
Spesies setosa saja yang dipilih:
irisdplyr %>%
filter(Species == "setosa") %>%
summary
## Sepal.Length Petal.Length Species log.Petal
## Min. :4.300 Min. :1.000 setosa :50 Min. :0.0000
## 1st Qu.:4.800 1st Qu.:1.400 versicolor: 0 1st Qu.:0.3365
## Median :5.000 Median :1.500 virginica : 0 Median :0.4055
## Mean :5.006 Mean :1.462 Mean :0.3728
## 3rd Qu.:5.200 3rd Qu.:1.575 3rd Qu.:0.4539
## Max. :5.800 Max. :1.900 Max. :0.6419
## log.Petal2
## Min. :0.0000
## 1st Qu.:0.3365
## Median :0.4055
## Mean :0.3728
## 3rd Qu.:0.4539
## Max. :0.6419
Plot spesies setosa saja:
irisdplyr %>%
filter(Species == "setosa") %>%
ggplot(., aes(x=Sepal.Length, y=log.Petal2)) +
geom_point() + ggtitle("Setosa") +
stat_smooth(method = "lm")
Perbandingan
Jika dibandingkan dengan menggunakan fungsi paket base
, hasil menggunakan fungsi di paket dplyr
dengan paket base
adalah sama.
spsetosa <- iris2[iris2$Species == "setosa",]
ggplot(data = spsetosa, aes(x= Sepal.Length, y = log.Petal)) +
geom_point() + ggtitle("Setosa") +
stat_smooth(method = "lm")