R Select (), Filter (), Arrange (), Pipeline with Example

Daftar Isi:

Anonim

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## $ X  1, 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)head

Keluaran:

## 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 No

Ringkasan

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, condition1
ondition2)
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