R Pilih (), Tapis (), Susun (), Paip dengan Contoh

Isi kandungan:

Anonim

Dalam tutorial ini, anda akan belajar

  • pilih ()
  • Tapis ()
  • Saluran paip
  • susun ()

Perpustakaan yang disebut dplyr mengandungi kata kerja berharga untuk menavigasi di dalam set data. Melalui tutorial ini, anda akan menggunakan set data Waktu Perjalanan. Set data mengumpulkan maklumat mengenai petunjuk perjalanan oleh pemandu antara rumahnya dan tempat kerjanya. Terdapat empat belas pemboleh ubah dalam set data, termasuk:

  • DayOfWeek: Kenal pasti hari dalam seminggu pemandu menggunakan keretanya
  • Jarak: Jumlah jarak perjalanan
  • MaxSpeed: Kelajuan maksimum perjalanan
  • TotalTime: Panjang dalam beberapa minit perjalanan

Set data mempunyai sekitar 200 pemerhatian dalam set data, dan perjalanan berlaku antara hari Isnin hingga Jumaat.

Pertama sekali, anda perlu:

  • memuatkan set data
  • periksa struktur data.

Satu ciri yang berguna dengan dplyr adalah fungsi sekilas (). Ini adalah peningkatan berbanding str (). Kita boleh menggunakan sekilas () untuk melihat struktur set data 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)

Pengeluaran:

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

Ini jelas bahawa Pembolehubah Komen memerlukan diagnostik lebih lanjut. Pemerhatian pertama bagi pembolehubah Komen hanyalah nilai yang hilang.

sum(df$Comments =)

Penjelasan Kod

  • sum (df $ Comments == ""): Jumlahkan pemerhatian sama dengan "" di ruangan komen dari df

Pengeluaran:

## [1] 181 

pilih ()

Kami akan memulakan dengan kata kerja pilih (). Kami tidak semestinya memerlukan semua pemboleh ubah, dan amalan yang baik adalah memilih hanya pemboleh ubah yang anda rasa relevan.

Kami mempunyai 181 pemerhatian yang hilang, hampir 90 peratus daripada kumpulan data. Sekiranya anda memutuskan untuk mengecualikannya, anda tidak akan dapat meneruskan analisis.

Kemungkinan lain adalah menjatuhkan Komen pemboleh ubah dengan kata kerja pilih ().

Kita boleh memilih pemboleh ubah dengan cara yang berbeza dengan pilih (). Perhatikan bahawa, argumen pertama adalah set 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 boleh menggunakan cara ketiga untuk mengecualikan pembolehubah Komen.

step_1_df <- select(df, -Comments)dim(df)

Pengeluaran:

## [1] 205 14
dim(step_1_df)

Pengeluaran:

## [1] 205 13 

Set data asal mempunyai 14 ciri sementara step_1_df mempunyai 13.

Tapis ()

Kata kerja penapis () membantu memastikan pemerhatian mengikut kriteria. Penapis () berfungsi sama seperti pilih (), anda melewati kerangka data terlebih dahulu dan kemudian keadaan dipisahkan dengan koma:

filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data

Satu kriteria

Pertama sekali, anda boleh mengira bilangan pemerhatian dalam setiap tahap pemboleh ubah faktor.

table(step_1_df$GoingTo)

Penjelasan Kod

  • jadual (): Hitung jumlah pemerhatian mengikut tahap. Perhatikan, hanya pemboleh ubah tahap faktor yang diterima
  • jadual (step_1_df $ GoingTo): Hitung jumlah perjalanan menuju ke tujuan akhir.

Pengeluaran:

#### GSK Home## 105 100

Jadual fungsi () menunjukkan 105 perjalanan menuju GSK dan 100 ke Rumah.

Kita dapat menyaring data untuk mengembalikan satu set data dengan 105 pemerhatian dan satu lagi dengan 100 pemerhatian.

# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)

Pengeluaran:

## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)

Pengeluaran:

## [1] 105 14 

Pelbagai kriteria

Kami dapat menapis set data dengan lebih daripada satu kriteria. Sebagai contoh, anda boleh mengambil pemerhatian di mana tujuannya adalah Rumah dan berlaku pada hari Rabu.

select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)

Pengeluaran:

## [1] 23 14 

23 pemerhatian sepadan dengan kriteria ini.

Saluran paip

Pembuatan set data memerlukan banyak operasi, seperti:

  • mengimport
  • penggabungan
  • memilih
  • tapisan
  • dan sebagainya

Perpustakaan dplyr dilengkapi dengan operator praktikal,%>%, yang disebut saluran paip . Ciri saluran paip menjadikan manipulasi itu bersih, cepat dan kurang menimbulkan kesilapan.

Pengendali ini adalah kod yang melakukan langkah tanpa menyimpan langkah perantaraan ke cakera keras. Sekiranya anda kembali ke contoh kami dari atas, anda boleh memilih pemboleh ubah yang menarik dan menapisnya. Kami mempunyai tiga langkah:

  • Langkah 1: Import data: Import data gps
  • Langkah 2: Pilih data: Pilih GoingTo dan DayOfWeek
  • Langkah 3: Tapis data: Hanya pulang ke Rumah dan Rabu

Kita boleh menggunakan cara yang sukar 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)

Pengeluaran:

## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday

Itu bukan cara mudah untuk melakukan banyak operasi, terutama dalam keadaan dengan banyak langkah. Persekitaran berakhir dengan banyak objek yang disimpan.

Mari gunakan operator saluran paip%>% sebagai gantinya. Kita hanya perlu menentukan kerangka data yang digunakan pada awalnya dan semua proses akan mengalir darinya.

Sintaks asas saluran paip

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 boleh membuat paip pertama anda mengikut langkah-langkah yang dinyatakan 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)

Pengeluaran:

## [1] TRUE 

Kami bersedia membuat set data yang menakjubkan dengan operator saluran paip.

susun ()

Dalam tutorial sebelumnya, anda belajar bagaimana menyusun nilai dengan fungsi sort (). Perpustakaan dplyr mempunyai fungsi menyusunnya. Ia berfungsi seperti daya tarikan dengan saluran paip. Kata kerja susunan () dapat menyusun semula satu atau banyak baris, sama ada menaik (lalai) 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 

Kami dapat menyusun jarak mengikut destinasi.

# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)head

Pengeluaran:

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

Dalam jadual di bawah, anda merangkum semua operasi yang anda pelajari semasa tutorial.

Kata kerja Objektif Kod Penjelasan
sekilas periksa struktur df
glimpse(df)
Sama dengan str ()
pilih () Pilih / kecualikan pemboleh ubah
select(df, A, B ,C)
Pilih pemboleh ubah A, B dan C
select(df, A:C)
Pilih semua pemboleh ubah dari A hingga C
select(df, -C)
Kecualikan C
penapis () Tapis df berdasarkan satu atau banyak syarat
filter(df, condition1)
Satu syarat
filter(df, condition1
ondition2)
susun () Isih set data dengan satu atau banyak pemboleh ubah
arrange(A)
Jenis pemboleh ubah menaik
arrange(A, B)
Jenis pemboleh ubah menaik dan A
arrange(desc(A), B)
Menurunkan jenis pemboleh ubah A dan jenis menaik B
%>% Buat saluran paip antara setiap langkah
step 1 %>% step 2 %>% step 3