Dalam tutorial ini, Anda akan belajar
- Pilih()
- Saring()
- Pipa
- mengatur()
Pustaka yang disebut dplyr berisi kata kerja berharga untuk dinavigasi di dalam kumpulan data. Melalui tutorial ini, Anda akan menggunakan kumpulan data Waktu perjalanan. Dataset mengumpulkan informasi tentang perjalanan yang dipimpin oleh seorang pengemudi antara rumahnya dan tempat kerjanya. Ada empat belas variabel dalam dataset, termasuk:
- DayOfWeek: Identifikasi hari dalam seminggu saat pengemudi menggunakan mobilnya
- Jarak: Total jarak perjalanan
- MaxSpeed: Kecepatan maksimum perjalanan
- TotalTime: Lamanya dalam menit perjalanan
Dataset memiliki sekitar 200 pengamatan dalam kumpulan data, dan perjalanan terjadi antara Senin hingga Jumat.
Pertama-tama, Anda perlu:
- memuat set data
- periksa struktur datanya.
Salah satu fitur praktis dengan dplyr adalah fungsi glimpse (). Ini merupakan peningkatan dari str (). Kita bisa menggunakan glimpse () untuk melihat struktur dataset dan memutuskan manipulasi apa yang diperlukan.
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Keluaran:
## Observations: 205## Variables: 14## $ X1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14,… ## $ Date 1/6/2012, 1/6/2012, 1/4/2012, 1/4/2012, 1/3/20… ## $ StartTime 16:37, 08:20, 16:17, 07:53, 18:57, 07:57, 17:3… ## $ DayOfWeek Friday, Friday, Wednesday, Wednesday, Tuesday,… ## $ GoingTo Home, GSK, Home, GSK, Home, GSK, Home, GSK, GS… ## $ Distance 51.29, 51.63, 51.27, 49.17, 51.15, 51.80, 51.37… ## $ MaxSpeed 127.4, 130.3, 127.4, 132.3, 136.2, 135.8, 123.2… ## $ AvgSpeed 78.3, 81.8, 82.0, 74.2, 83.4, 84.5, 82.9, 77.5,… ## $ AvgMovingSpeed 84.8, 88.9, 85.8, 82.9, 88.1, 88.8, 87.3, 85.9,… ## $ FuelEconomy , , , , , , -, -, 8.89, 8.89, 8.89, 8.89, 8.89… ## $ TotalTime 39.3, 37.9, 37.5, 39.8, 36.8, 36.8, 37.2, 37.9,… ## $ MovingTime 36.3, 34.9, 35.9, 35.6, 34.8, 35.0, 35.3, 34.3,… ## $ Take407All No, No, No, No, No, No, No, No, No, No, No, No… ## $ Comments , , , , , , , , , , , , , , , Put snow tires o…
Jelas bahwa variabel Komentar membutuhkan diagnostik lebih lanjut. Pengamatan pertama dari variabel Komentar hanya nilai yang hilang.
sum(df$Comments =)
Penjelasan Kode
- sum (df $ Comments == ""): Jumlahkan observasi yang sama dengan "" di kolom komentar dari df
Keluaran:
## [1] 181
Pilih()
Kita akan mulai dengan kata kerja select (). Kami tidak perlu semua variabel, dan praktik yang baik adalah memilih hanya variabel yang menurut Anda relevan.
Kami memiliki 181 observasi yang hilang, hampir 90 persen dari kumpulan data. Jika Anda memutuskan untuk mengecualikannya, Anda tidak akan dapat melanjutkan analisis.
Kemungkinan lainnya adalah menghapus variabel Comment dengan kata kerja select ().
Kita dapat memilih variabel dengan cara yang berbeda dengan select (). Perhatikan bahwa, argumen pertama adalah kumpulan data.
- `select(df, A, B ,C)`: Select the variables A, B and C from df dataset.- `select(df, A:C)`: Select all variables from A to C from df dataset.- `select(df, -C)`: Exclude C from the dataset from df dataset.
Anda dapat menggunakan cara ketiga untuk mengecualikan variabel Komentar.
step_1_df <- select(df, -Comments)dim(df)
Keluaran:
## [1] 205 14
dim(step_1_df)
Keluaran:
## [1] 205 13
Dataset asli memiliki 14 fitur sedangkan step_1_df memiliki 13 fitur.
Saring()
Kata kerja filter () membantu menjaga pengamatan mengikuti kriteria. Filter () bekerja persis seperti select (), Anda meneruskan bingkai data terlebih dahulu dan kemudian kondisi yang dipisahkan oleh koma:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Satu kriteria
Pertama-tama, Anda dapat menghitung jumlah observasi dalam setiap level variabel faktor.
table(step_1_df$GoingTo)
Penjelasan Kode
- table (): Hitung jumlah observasi berdasarkan level. Perhatikan, hanya variabel tingkat faktor yang diterima
- table (step_1_df $ GoingTo): Hitung jumlah perjalanan menuju tujuan akhir.
Keluaran:
#### GSK Home## 105 100
Tabel fungsi () menunjukkan 105 tumpangan menuju GSK dan 100 ke Rumah.
Kita dapat memfilter data untuk mengembalikan satu dataset dengan 105 observasi dan satu lagi dengan 100 observasi.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Keluaran:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Keluaran:
## [1] 105 14
Beberapa kriteria
Kami dapat memfilter kumpulan data dengan lebih dari satu kriteria. Misalnya, Anda dapat mengekstrak pengamatan di mana tujuannya adalah Rumah dan terjadi pada hari Rabu.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Keluaran:
## [1] 23 14
23 observasi cocok dengan kriteria ini.
Pipa
Pembuatan set data membutuhkan banyak operasi, seperti:
- pengimporan
- penggabungan
- memilih
- penyaringan
- dan seterusnya
Pustaka dplyr dilengkapi dengan operator praktis,%>%, yang disebut pipeline . Fitur pipeline membuat manipulasi bersih, cepat, dan mengurangi kesalahan.
Operator ini adalah kode yang melakukan langkah-langkah tanpa menyimpan langkah-langkah perantara ke hard drive. Jika Anda kembali ke contoh kami di atas, Anda dapat memilih variabel yang diminati dan memfilternya. Kami memiliki tiga langkah:
- Langkah 1: Impor data: Impor data gps
- Langkah 2: Pilih data: Pilih GoingTo dan DayOfWeek
- Langkah 3: Filter data: Hanya kembali ke Beranda dan Rabu
Kita dapat menggunakan cara yang sulit untuk melakukannya:
# Step 1step_1 <- read.csv(PATH)# Step 2step_2 <- select(step_1, GoingTo, DayOfWeek)# Step 3step_3 <- filter(step_2, GoingTo == "Home", DayOfWeek == "Wednesday")head(step_3)
Keluaran:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
Itu bukanlah cara yang mudah untuk melakukan banyak operasi, terutama dalam situasi dengan banyak langkah. Lingkungan berakhir dengan banyak objek yang disimpan.
Mari gunakan operator pipeline%>% sebagai gantinya. Kita hanya perlu mendefinisikan kerangka data yang digunakan di awal dan semua proses akan mengalir darinya.
Sintaks dasar pipeline
New_df <- df %>%step 1 %>%step 2 %>%… arguments- New_df: Name of the new data frame- df: Data frame used to compute the step- step: Instruction for each step- Note: The last instruction does not need the pipe operator `%`, you don't have instructions to pipe anymoreNote: Create a new variable is optional. If not included, the output will be displayed in the console.
Anda dapat membuat pipa pertama Anda mengikuti langkah-langkah yang disebutkan di atas.
# Create the data frame filter_home_wed.It will be the object return at the end of the pipelinefilter_home_wed <-#Step 1read.csv(PATH) % > %#Step 2select(GoingTo, DayOfWeek) % > %#Step 3filter(GoingTo == "Home",DayOfWeek == "Wednesday")identical(step_3, filter_home_wed)
Keluaran:
## [1] TRUE
Kami siap membuat set data yang menakjubkan dengan operator pipeline.
mengatur()
Dalam tutorial sebelumnya, Anda mempelajari cara mengurutkan nilai dengan function sort (). Library dplyr memiliki fungsi pengurutannya. Ini bekerja seperti pesona dengan pipa. Kata kerja mengatur () dapat menyusun ulang satu atau banyak baris, baik menaik (default) atau menurun.
- `arrange(A)`: Ascending sort of variable A- `arrange(A, B)`: Ascending sort of variable A and B- `arrange(desc(A), B)`: Descending sort of variable A and ascending sort of B
Kita bisa mengurutkan jarak berdasarkan tujuan.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headKeluaran:
## X Date StartTime DayOfWeek GoingTo Distance MaxSpeed AvgSpeed## 1 193 7/25/2011 08:06 Monday GSK 48.32 121.2 63.4## 2 196 7/21/2011 07:59 Thursday GSK 48.35 129.3 81.5## 3 198 7/20/2011 08:24 Wednesday GSK 48.50 125.8 75.7## 4 189 7/27/2011 08:15 Wednesday GSK 48.82 124.5 70.4## 5 95 10/11/2011 08:25 Tuesday GSK 48.94 130.8 85.7## 6 171 8/10/2011 08:13 Wednesday GSK 48.98 124.8 72.8## AvgMovingSpeed FuelEconomy TotalTime MovingTime Take407All## 1 78.4 8.45 45.7 37.0 No## 2 89.0 8.28 35.6 32.6 Yes## 3 87.3 7.89 38.5 33.3 Yes## 4 77.8 8.45 41.6 37.6 No## 5 93.2 7.81 34.3 31.5 Yes## 6 78.8 8.54 40.4 37.3 NoRingkasan
Pada tabel di bawah, Anda merangkum semua operasi yang Anda pelajari selama tutorial.
Kata kerja Objektif Kode Penjelasan melihat sekilas periksa struktur df glimpse(df)Identik dengan str () Pilih() Pilih / kecualikan variabel select(df, A, B ,C)Pilih variabel A, B dan C select(df, A:C)Pilih semua variabel dari A hingga C select(df, -C)Kecualikan C Saring() Filter df berdasarkan satu atau banyak kondisi filter(df, condition1)Satu syarat filter(df, condition1ondition2) mengatur() Urutkan kumpulan data dengan satu atau banyak variabel arrange(A)Variabel A naik keatas arrange(A, B)Variabel A dan B jenis naik arrange(desc(A), B)Jenis menurun dari variabel A dan jenis menaik dari B %>% Buat jalur pipa di antara setiap langkah step 1 %>% step 2 %>% step 3