Bu eğitimde öğreneceksiniz
- seç ()
- Filtrele ()
- Boru hattı
- düzenlemek ()
Dplyr adlı kitaplık, veri kümesinin içinde gezinmek için değerli fiiller içerir. Bu eğitim aracılığıyla Seyahat süreleri veri kümesini kullanacaksınız. Veri kümesi, bir sürücünün evi ile işyeri arasındaki yolculuk yollarına ilişkin bilgileri toplar. Veri kümesinde aşağıdakiler dahil on dört değişken vardır:
- DayOfWeek: Sürücünün arabasını kullandığı haftanın gününü belirleyin
- Mesafe: Yolculuğun toplam mesafesi
- MaxSpeed: Yolculuğun maksimum hızı
- TotalTime: Yolculuğun dakika cinsinden uzunluğu
Veri setinin veri setinde yaklaşık 200 gözlem var ve geziler Pazartesi'den Cuma'ya kadar gerçekleşti.
Her şeyden önce yapmanız gerekenler:
- veri kümesini yükle
- verilerin yapısını kontrol edin.
Dplyr ile kullanışlı bir özellik, glimpse () işlevidir. Bu, str () üzerinde bir gelişmedir. Veri kümesinin yapısını görmek ve hangi manipülasyonun gerekli olduğuna karar vermek için glimpse () kullanabiliriz.
library(dplyr)PATH <- "https://raw.githubusercontent.com/guru99-edu/R-Programming/master/travel_times.csv"df <- read.csv(PATH)glimpse(df)
Çıktı:
## 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…
Açıktır ki, Yorumlar değişkeninin daha fazla tanılamaya ihtiyacı vardır. Yorumlar değişkeninin ilk gözlemleri yalnızca eksik değerlerdir.
sum(df$Comments =)
Kod Açıklama
- sum (df $ Comments == ""): df'deki sütun açıklamalarındaki gözlemleri "" değerine eşit olarak toplayın
Çıktı:
## [1] 181
seç ()
Select () fiiliyle başlayacağız. Mutlaka tüm değişkenlere ihtiyacımız yoktur ve iyi bir uygulama, yalnızca alakalı bulduğunuz değişkenleri seçmektir.
Veri kümesinin neredeyse yüzde 90'ı olan 181 eksik gözlemimiz var. Bunları dışlamaya karar verirseniz, analize devam edemezsiniz.
Diğer olasılık, açıklama değişkenini select () fiili ile bırakmaktır.
Select () ile değişkenleri farklı şekillerde seçebiliriz. İlk argümanın veri kümesi olduğunu unutmayın.
- `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.
Yorumlar değişkenini hariç tutmak için üçüncü yolu kullanabilirsiniz.
step_1_df <- select(df, -Comments)dim(df)
Çıktı:
## [1] 205 14
dim(step_1_df)
Çıktı:
## [1] 205 13
Orijinal veri kümesinde 14 özellik varken step_1_df'de 13 özellik bulunur.
Filtrele ()
Filter () fiili, gözlemlerin bir ölçütü takip etmesine yardımcı olur. Filter () tam olarak select () gibi çalışır, önce veri çerçevesini ve ardından virgülle ayrılmış bir koşulu iletirsiniz:
filter(df, condition)arguments:- df: dataset used to filter the data- condition: Condition used to filter the data
Bir kriter
Her şeyden önce, bir faktör değişkeninin her seviyesindeki gözlemlerin sayısını sayabilirsiniz.
table(step_1_df$GoingTo)
Kod Açıklama
- table (): Düzeye göre gözlem sayısını sayın. Not, sadece faktör seviyesi değişkenleri kabul edilir
- tablo (step_1_df $ GoingTo): Son hedefe doğru yolculukların sayısını sayın.
Çıktı:
#### GSK Home## 105 100
İşlev tablosu () 105 sürüşün GSK'ya ve 100 kişinin Eve gideceğini gösterir.
Bir veri kümesini 105 gözlem ve diğerini 100 gözlemle döndürecek şekilde verileri filtreleyebiliriz.
# Select observationsif GoingTo == Homeselect_home <- filter(df, GoingTo == "Home")dim(select_home)
Çıktı:
## [1] 100 14
# Select observationsif GoingTo == Workselect_work <- filter(df, GoingTo == "GSK")dim(select_work)
Çıktı:
## [1] 105 14
Birden çok kriter
Bir veri setini birden fazla kriterle filtreleyebiliriz. Örneğin, varış yerinin Ev olduğu ve Çarşamba günü meydana geldiği gözlemleri çıkartabilirsiniz.
select_home_wed <- filter(df, GoingTo == "Home" & DayOfWeek == "Wednesday")dim(select_home_wed)
Çıktı:
## [1] 23 14
23 gözlem bu kritere uymaktadır.
Boru hattı
Bir veri kümesinin oluşturulması, aşağıdakiler gibi birçok işlem gerektirir:
- ithal
- birleştirme
- seçme
- süzme
- ve bunun gibi
Dplyr kütüphanesi adı verilen pratik operatörü,%>% ile gelir boru hattı . Ardışık düzen özelliği, manipülasyonu temiz, hızlı ve daha az hata anında yapar.
Bu operatör, ara adımları sabit sürücüye kaydetmeden adımları gerçekleştiren bir koddur. Yukarıdaki örneğimize geri dönerseniz, ilgilendiğiniz değişkenleri seçebilir ve filtreleyebilirsiniz. Üç adımımız var:
- Adım 1: Verileri içe aktarın: GPS verilerini içe aktarın
- Adım 2: Verileri seçin: GoingTo ve DayOfWeek'i seçin
- 3. Adım: Verileri filtreleyin: Yalnızca Ana Sayfaya ve Çarşamba'ya dönün
Bunu yapmak için zor yolu kullanabiliriz:
# 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)
Çıktı:
## GoingTo DayOfWeek## 1 Home Wednesday## 2 Home Wednesday## 3 Home Wednesday## 4 Home Wednesday## 5 Home Wednesday## 6 Home Wednesday
Bu, özellikle çok sayıda adımın olduğu bir durumda birçok işlemi gerçekleştirmenin uygun bir yolu değildir. Ortam, depolanan birçok nesne ile sonuçlanır.
Onun yerine%>% ardışık düzen operatörünü kullanalım. Sadece başlangıçta kullanılan veri çerçevesini tanımlamamız gerekiyor ve tüm süreç ondan akacak.
İşlem hattının temel sözdizimi
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.
Yukarıda sıralanan adımları izleyerek ilk borunuzu oluşturabilirsiniz.
# 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)
Çıktı:
## [1] TRUE
Boru hattı operatörüyle çarpıcı bir veri kümesi oluşturmaya hazırız.
düzenlemek ()
Önceki öğreticide, sort () işleviyle değerleri nasıl sıralayacağınızı öğreneceksiniz. Kütüphane dplyr'in sıralama işlevi vardır. Boru hattı ile bir cazibe gibi çalışıyor. Düzenlemek () fiili, artan (varsayılan) veya azalan olmak üzere bir veya daha fazla satırı yeniden sıralayabilir.
- `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
Mesafeyi hedefe göre sıralayabiliriz.
# Sort by destination and distancestep_2_df <-step_1_df %>%arrange(GoingTo, Distance)headÇıktı:
## 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Özet
Aşağıdaki tabloda, eğitim sırasında öğrendiğiniz tüm işlemleri özetleyeceksiniz.
Fiil Amaç Kod Açıklama bakış bir df'nin yapısını kontrol edin glimpse(df)Str () ile Özdeş seç () Değişkenleri seçin / hariç tutun select(df, A, B ,C)A, B ve C değişkenlerini seçin select(df, A:C)A'dan C'ye tüm değişkenleri seçin select(df, -C)C'yi hariç tut filtre () Df'yi bir veya daha fazla koşula göre filtreleyin filter(df, condition1)Tek koşul filter(df, condition1ondition2) düzenlemek () Veri kümesini bir veya daha fazla değişkenle sıralayın arrange(A)Artan çeşit A değişkeni arrange(A, B)Artan çeşit A ve B değişkeni arrange(desc(A), B)Azalan tür A değişkeni ve artan tür B %>% Her adım arasında bir ardışık düzen oluşturun step 1 %>% step 2 %>% step 3