18 Kayıp Veri İşlemleri

library("robustbase")
data(delivery,package="robustbase") #Hazır veriyi kullanmak için.
df <- delivery
str(df)
## 'data.frame':    25 obs. of  3 variables:
##  $ n.prod  : int  7 3 3 4 6 7 2 7 30 5 ...
##  $ distance: int  560 220 340 80 150 330 110 210 1460 605 ...
##  $ delTime : num  16.7 11.5 12 14.9 13.8 ...
# install.packages("tibble") paketi yüklemek için 
library(tibble)
glimpse(df) #tibble kütüphanesi ile
## Observations: 25
## Variables: 3
## $ n.prod   <int> 7, 3, 3, 4, 6, 7, 2, 7, 30, 5, 16, 10, 4, 6, 9, 10, 6, 7, 3,…
## $ distance <int> 560, 220, 340, 80, 150, 330, 110, 210, 1460, 605, 688, 215, …
## $ delTime  <dbl> 16.68, 11.50, 12.03, 14.88, 13.75, 18.11, 8.00, 17.83, 79.24…
# Özet bilgiler.
summary(df)
##      n.prod         distance         delTime     
##  Min.   : 2.00   Min.   :  36.0   Min.   : 8.00  
##  1st Qu.: 4.00   1st Qu.: 150.0   1st Qu.:13.75  
##  Median : 7.00   Median : 330.0   Median :18.11  
##  Mean   : 8.76   Mean   : 409.3   Mean   :22.38  
##  3rd Qu.:10.00   3rd Qu.: 605.0   3rd Qu.:21.50  
##  Max.   :30.00   Max.   :1460.0   Max.   :79.24
df2 <- df
anyNA(df2) # Herhangi bir NA değeri olup olmadığını gösterir.
## [1] FALSE
#HATIRLATMA - Seçme işlemi
df[df$n.prod > 8 & df$distance > 200,] 
##    n.prod distance delTime
## 9      30     1460   79.24
## 11     16      688   40.33
## 12     10      215   21.00
## 15      9      448   24.00
## 16     10      776   29.00
## 20     17      770   35.10
## 22     26      810   52.32
## 23      9      450   18.75
#df2 şeklinde NA değerleri olan bir data.frame oluşturalım.
df2 <- df
df2[c(2,4), 1] <- NA
df2[c(1,3),2] <- NA
head(df2)
##   n.prod distance delTime
## 1      7       NA   16.68
## 2     NA      220   11.50
## 3      3       NA   12.03
## 4     NA       80   14.88
## 5      6      150   13.75
## 6      7      330   18.11
#Sütunlara göre kaçta NA değeri olduğunu görmek için;
colSums(is.na(df2))
##   n.prod distance  delTime 
##        2        2        0
#Sütun ortalamalarını elde etmek için;
colMeans(df2,na.rm=T)
##     n.prod   distance    delTime 
##   9.217391 405.739130  22.384000
# Verideki NA değerlerine complete.cases() fonksiyonu ile ulaşılabilir.
summary(complete.cases(df2))
##    Mode   FALSE    TRUE 
## logical       4      21
complete.cases(df2)
##  [1] FALSE FALSE FALSE FALSE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [13]  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE  TRUE
## [25]  TRUE
# NA değerlerinin olduğu satıra ulaşmak için;
df2[!complete.cases(df2),]
##   n.prod distance delTime
## 1      7       NA   16.68
## 2     NA      220   11.50
## 3      3       NA   12.03
## 4     NA       80   14.88
# NA değerlerini silerek atamak için na.omit() fonksiyonu da kullanılabilir. 
# NA olan tüm satırları çıkartır.
df3 <- na.omit(df2)
head(df3)
##    n.prod distance delTime
## 5       6      150   13.75
## 6       7      330   18.11
## 7       2      110    8.00
## 8       7      210   17.83
## 9      30     1460   79.24
## 10      5      605   21.50