1 Başlangıç

Connecticut abd’nin kuzey doğusunda kalan bir eyalettir.ABD resmi kanallarından elde edilen veri üzerinden Herhangi bir uyuşturucudan dolayı kazayla ölen kişilerin yaşları cinsiyetleri ve ölüme sebebiyet veren etken maddeleri içermektedir.

Markdown Monster icon


(Veri kaynağı:)[“https://data.ct.gov/Health-and-Human-Services/Accidental-Drug-Related-Deaths-2012-2018/rybz-nyjw”]

1.1 Gerekli kütüphaneler ve verinin yüklenmesi

options(warn=-1)#uyarı mesajlarını kapatma
library(readr) #read_csv komutu için
library(tidyverse) #dplyr ggplot gibi kutuphaneler topluluğunun yüklenmesi
library(stringr) #gözlem içindeki verileri seçmek için
library(DT) # daha güzel tablo gösterimi
require(knitr)
Drugs <- read_csv("Drugs.csv")

2 Veri manipülasyonu

Verimizi analize hazır hale getirmek için bazı değişkenlerdeki eksik gözlemlerin giderilmesi, yeniden isimlendirilmesi, veya değişkenlerin silinmesi gibi işlemleri yapacağız.

2.1 Ölünen şehir değişkenin eksiklikleri doldurulabilir mi?

Residence city/country sütunları ile death city/country kısımları aşırı derecede benzer arada bazı farklılıklar olsada ufak bir hata payını kabul ederek bu hataları düzeltebiliriz.

library(dplyr)
Drugs %>% dplyr::select(ResidenceCity,DeathCity) %>% na.omit() %>% #2 değişkendeki değerler birbirleriyle eşitmi kontrol ediyoruz.
  count(.$ResidenceCity==.$DeathCity)
.\(ResidenceCity == .\)DeathCity n
FALSE 1336
TRUE 3595

Iyi bir oran versede hata oranı beklediğimden de yüksek Bu şekilde eksik verileri doldurmaktansa eksik gözlemleri silerek şehirlerdeki ölümleri incelemek daha anlamlı olur.

2.2 Cinsiyet değişkeni

sum(is.na(Drugs$Sex))# na gözlemleri toplamak
## [1] 6
unique(Drugs$Sex) #kaç adet eşşiz cinsiyet kategorisi var
## [1] NA        "Male"    "Female"  "Unknown"

Eksik 6 tane gözlem var. Bunları bilinmeyen yapalım.

Drugs$Sex[which(is.na(Drugs$Sex))]="Unknown" 
sum(!complete.cases(Drugs$Sex))
## [1] 0

2.3 Etnik kimlik

sum(!complete.cases(Drugs$Race))
## [1] 13

Eksik 13 eleman var bunları bilinmeyen olarak güncelleyelim.

unique(Drugs$Race)
##  [1] NA                       "Black"                  "White"                 
##  [4] "Asian, Other"           "Hispanic, White"        "Asian Indian"          
##  [7] "Hispanic, Black"        "Unknown"                "Other"                 
## [10] "Chinese"                "Native American, Other" "Hawaiian"
Drugs$Race[which(is.na(Drugs$Race))]="Unknown" 
sum(is.na(Drugs$Race))
## [1] 0

eksik gözlemler bilinmiyor olarak güncellendi.

2.4 Gereksiz değişkenlerin çıkartılması

Birazdan verideki bazı değişkenleri çıkartacağız.Bunun sebebi verideki bu değişkenlerin analiz esnasında gerekli olmaması ve verinin hacmini büyütmesinden dolayı incelemeyi zorlaştırması.

Drugs<-Drugs %>% select(-c(ResidenceCityGeo,
                           ID,
                           InjuryState,
                           DeathCityGeo,
                           InjuryCityGeo,
                           DeathCityGeo
                           ,MannerofDeath,)) #bu değişkenleri veriden çıkarıyoruz. 
#-c() select içerisinde kullanıldığında seçme anlamına gelir.

2.5 Bağımlılık etkenlerinin düzeltilmesi

Bağımlıık etkenlerin varlığı ilgili değişlenlerde Y,YES gibi ifadelerle belirtilmiş tüm ifadelerin nasıl doldurulduğunu inceledikden sonra ilgili etken madde varsa 1 yoksa 0 diyerek sorunu çözeceğiz.

apply(Drugs[19:35],2,unique) #apply satır veya sütun üzerinden işlem yapmayı sağlar.
## $Heroin
## [1] NA  "Y"
## 
## $Cocaine
## [1] NA  "Y"
## 
## $Fentanyl
## [1] "Y"        NA         "Y-A"      "Y POPS"   "Y (PTCH)"
## 
## $FentanylAnalogue
## [1] NA  "Y"
## 
## $Oxycodone
## [1] NA  "Y"
## 
## $Oxymorphone
## [1] NA  "Y"
## 
## $Ethanol
## [1] NA  "Y"
## 
## $Hydrocodone
## [1] "Y" NA 
## 
## $Benzodiazepine
## [1] "Y" NA 
## 
## $Methadone
## [1] NA  "Y"
## 
## $Amphet
## [1] NA  "Y"
## 
## $Tramad
## [1] NA  "Y"
## 
## $Morphine_NotHeroin
## [1] NA                 "Y"                "YES"              "STOLE MEDS"      
## [5] "NO RX BUT STRAWS" "PCP NEG"         
## 
## $Hydromorphone
## [1] NA  "Y"
## 
## $Other
##   [1] NA                          "Bupren"                   
##   [3] "lsd, hydromorph"           "opiate"                   
##   [5] "BUPREN"                    "HYDROMORPH"               
##   [7] "OTHERS"                    "pcp"                      
##   [9] "PCP"                       "ketamine"                 
##  [11] "meperidine"                "opiate screen"            
##  [13] "MDMA"                      "COD"                      
##  [15] "PAROX"                     "carfentanil"              
##  [17] "hydromorph"                "DUSTER"                   
##  [19] "DIPHENHYDRAMINE"           "Buprenor"                 
##  [21] "HYDRO MORPH"               "BUPRE"                    
##  [23] "MORPHINE"                  "morphine"                 
##  [25] "MORPH"                     "hyd-morph"                
##  [27] "U47700"                    "DOX, DIPHEN"              
##  [29] "opiates"                   "Buprenor, carfentanil"    
##  [31] "mdma"                      "SERT"                     
##  [33] "TAPENTADOL"                "4-anpp"                   
##  [35] "methoxyPCP"                "N-ETHYL-PENTYLONE"        
##  [37] "PCP, HYDROMORPH"           "Mirtagynine"              
##  [39] "UK"                        "HYDROMORP"                
##  [41] "U-47700"                   "difluro"                  
##  [43] "DIPHENHYDRAMINE, ZOLPIDEM" "4-ANPP"                   
##  [45] "BUPRENORPHINE"             "Difluro"                  
##  [47] "H-MORPH"                   "BUPRENORP"                
##  [49] "U-47700 synthetic opioid"  "OPIATE"                   
##  [51] "Buprnor"                   "morphine RX"              
##  [53] "opioid"                    "OPIOID NOS"               
##  [55] "BUPRENOR"                  "CATHINONE"                
##  [57] "LOPERAMIDE"                "codeine"                  
##  [59] "GHB"                       "hydromorp"                
##  [61] "BUTALBITAL"                "Morphine"                 
##  [63] "PCP, N-ETHYL-PENTYLONE"    "Bupren, HEXADRONE"        
##  [65] "bupren"                    "HYDR-MOR"                 
##  [67] "pos 6-mam"                 "Rx morphine"              
##  [69] "Bupreno"                   "MEPERIDINE"               
##  [71] "others"                    "morphine no 6mam"         
##  [73] "U-47700, carfentanil"      "uk"                       
##  [75] "mitragine"                 "BUPRENORPHONE"            
##  [77] "MDMA, PCP"                 "DIPHENHY"                 
##  [79] "OPIATE IN HOSP?"           "Opiate screen"            
##  [81] "BUPRENO"                   "HYDROMORPH, BUPRENOR"     
##  [83] "QUIET"                     "HYDROM"                   
##  [85] "difluror"                  "KET"                      
##  [87] "BUPRENORPH"                "bath salt"                
##  [89] "Mitragynine"               "Hydromorph"               
##  [91] "MORPHINE/HYDROMORPH"       "buprenor"                 
##  [93] "2-A"                       "pcp. Bupren"              
##  [95] "tapentadol"                "buprop"                   
##  [97] "TOPIRAMATE"                "KETAMINE"                 
##  [99] "snorted"                   "HYDRMORP"                 
## [101] "MDMA, N-ETHYL-PENTYLONE"   "BUTALB"                   
## [103] "BUPREN, DIFLUORO"          "zolpidem"                 
## [105] "Difluor"                   "Buprenophine"             
## [107] "MORPHIINE"                 "DIPHENH"                  
## [109] "CODEINE"                   "Duster"                   
## [111] "PCP, MORPHINE NOS"         "Doxy, phenobarb"          
## [113] "PCP, Buprenor"             "morphin"                  
## [115] "DIFLOURO"                  "DIFLURO"                  
## [117] "morphine/cod"              "MORPHINE RX"              
## [119] "Codeine"                   "MORPHINE, HYDROMORPH"     
## [121] "MORPH NOS"                 "difluoroeth"              
## [123] "MORPH/COD"                 "duster"                   
## [125] "morphine, no rx in pmp"    "phenobarb"                
## [127] "HYROMORPH"                 "ZOLP"                     
## [129] "Buprno"                    "mORPHINE"                 
## [131] "Opiate"                    "diphen, chlorphen"        
## [133] "HYDMORPH"                  "PSEUDO"                   
## [135] "MORPH PCP"                
## 
## $OpiateNOS
## [1] NA  "Y"
## 
## $AnyOpioid
## [1] NA  "Y" "N"
# .,2 yapıldığında her sütuna girilen fonksiyonu çalıştırır.

19:32 sütunlarındaki NA değerler aslında o maddenin bulunmadığını, diğer bütün doldurma biçimleri bulunduğunu belirttiği için Na dışında bütün ifadeleri 1 Na ları 0 yapıyoruz. Analiz esnasındaki ana hedefimiz etken madde kullanım durumlarını kıyaslamak olduğu için etken maddde ile ilgili detayı önemsemiyoruz.

Şimdilik manipülasyon işlemlerimiz yeterli. Analiz esnasına gerekmesi durumda başka manipülasyonlarda yapabiliriz.

3 Keşifsel veri analizi

Artık verimizi çeşitli grafikler ile daha fazla anlamdırmaya başlayacağız. Çeşitli sorularılarımıza grafiklerle veya tablolarla cevap bulmaya çalışıyor olacağız. Öbcelikli olarak verideki ilk akla gelen değişkenlerin yaş cinsiyet birincil ölüm yeri gibi değişkenlerin dağılımlarını inceleceğiz. Başlayalım

head(Drugs,10)
Date DateType Age Sex Race ResidenceCity ResidenceCounty ResidenceState DeathCity DeathCounty Location LocationifOther DescriptionofInjury InjuryPlace InjuryCity InjuryCounty COD OtherSignifican Heroin Cocaine Fentanyl FentanylAnalogue Oxycodone Oxymorphone Ethanol Hydrocodone Benzodiazepine Methadone Amphet Tramad Morphine_NotHeroin Hydromorphone Other OpiateNOS AnyOpioid
06/28/2014 12:00:00 AM DateReported NA Unknown Unknown NA NA NA NA NA NA NA substance NA NA NA Acute fent, hydrocod, benzodiazepine NA 0 0 1 0 0 0 0 1 1 0 0 0 0 0 0 0 0
03/21/2013 12:00:00 AM DateofDeath 48 Male Black NORWALK NA NA NORWALK FAIRFIELD Hospital NA NA NA NA NA Cocaine Intoxication NA 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
03/13/2016 12:00:00 AM DateofDeath 30 Female White SANDY HOOK FAIRFIELD CT DANBURY NA Hospital NA Substance Abuse Unknown UNKNOWN NA Acute Heroin and Cocaine Intoxication NA 1 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1
03/31/2016 12:00:00 AM DateofDeath 23 Male White RYE WESTCHESTER NY GREENWICH NA Hospital NA substance abuse Residence RYE NA Acute Fentanyl and Morphine Intoxication NA 1 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 1
02/13/2013 12:00:00 AM DateofDeath 22 Male Asian, Other FLUSHING QUEENS NA GREENWICH FAIRFIELD Hospital NA Transdermal Absorption Other NA NA Fentanyl Intoxication NA 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0
06/29/2014 12:00:00 AM DateofDeath 23 Male White BRISTOL NA NA BRISTOL HARTFORD Residence NA Inhalation Residence NA NA Heroin Intoxication NA 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
08/12/2012 12:00:00 AM DateofDeath 21 Female White WEST HARTFORD HARTFORD NA WEST HARTFORD HARTFORD Residence NA Used Heroin Residence NA NA Heroin Toxicity NA 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
11/10/2013 12:00:00 AM DateofDeath 40 Female White HAMDEN NEW HAVEN NA NEW HAVEN NEW HAVEN Hospital NA NA NA NA NA Complications of Cocaine Intoxication NA 0 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
04/25/2012 12:00:00 AM DateofDeath 40 Male White EAST HARTFORD HARTFORD NA EAST HARTFORD HARTFORD Residence NA Used Heroin Residence NA NA Heroin Toxicity NA 1 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
05/15/2013 12:00:00 AM DateofDeath 50 Male White MONTVILLE NEW LONDON NA MONTVILLE NEW LONDON Residence NA Ingestion Residence NA NA Oxycodone Intoxication NA 0 0 0 0 1 0 0 0 0 0 0 0 0 0 0 0 0

3.1 Cinsiyetlere göre yaş dağılımı

yaşlara göre ölümlerin dağılımını inceleyelim.

library(plyr)
options(scipen = 1000)
kadin<-plyr::count(Drugs[Drugs$Sex=="Female",]$Age) %>% .[order(-.$freq),1] %>% .[1]

erkek<-plyr::count(Drugs[Drugs$Sex=="Male",]$Age) %>% .[order(-.$freq),1] %>% .[1]

#count bir ifadedeki değerleri saymaya yarayan bir fornkisyon.değişkenleri saydırdıktan
#sonra en çok gözleme sahip gözlemi bulmak için büyükten küçüğe sıralayıp ilk elemanı seçtim.

#verideki cinsiyeti bilinmeyen kişiler çok az olmasından dolayı yatay çizgi olarak gözüküyordu.
#bu sebeple dplyr::filter() komutu ile bu gözlemleri çıkardım.
#density plot ile tablodan çıkan maks min elemanlarının farklılığından ötürü 
#1-2 adım kaydırılarak görselin düzgün gözükmesi adına düzeltme yapıldı.

#geom_vline dikey yatay çizgi çizmeyi sağlayan komuttur.

#geom_text grafiklere yazı yazmayı sağlayan foksiyondur.

Drugs %>% filter(Sex==c("Female","Male")) %>% ggplot(.,aes(x=Age))+
  geom_density(aes(col=Sex))+ 
  #cinsiyetlere filtre edildi ve dağılım grafiği çizildi
  
  geom_vline(xintercept=kadin+3, size=1, color="red",linetype="dotted")+
  #kadınlar için dikey çizgi eklendi
  
  geom_text(aes(x=erkek, y=0, label=toString(erkek)), size=4, angle=0, vjust=1,col="blue", hjust=0)+
  
  geom_text(aes(x=kadin+2, y=0, label=toString(kadin)), size=4, angle=0, vjust=1,col="red", hjust=0)+
  
   geom_vline(xintercept=erkek+1, size=1, color="blue",linetype="dotted")

3.2 Hangi uyuşturucu etken maddesi daha fazla ölüme sebebiyet verdi?

Verimizde ölen kişilerin kullandıkları uyuşturuculara ait değerler bulunmakta bu değerleri toplayarak bir tablo haline getirelim daha sonra bar grafiği veya pasta grafiği çizerek listeleyelim.

drugs2<-drugs2 %>% select(-Other, everything()) #değişkeni sona alındı.


drugs2[19:34]<-apply(drugs2[19:34],2,as.numeric) #etken maddelerin olduğu sütunlar numeric olarak değiştirildi.Bu sayede bu değişkenleri sayarak bir frekans tablosu oluşturabileceğiz.

freq_table<-apply(drugs2[19:34], 2, sum) %>% data.frame() #her bir uyuşturucunun kaç adet kullanıldığı sayarak uyuşturucu-adet tablosu oluşturduk

freq_table$uyusturucu<-row.names(freq_table) #kullanılan uyuşturucuları değişken olarak ekledik
row.names(freq_table)<-paste(1:nrow(freq_table)) #satır isimlerini düzenledik
colnames(freq_table)[1]<-"adet" #adet kısmı "." olarak gözüküyordu tablo düzeni ve işlem hatalarını engellemek amacıyla "adet" olarak güncelledik.

freq_table<-freq_table %>% select(-adet, everything()) #adet ifadesini sona aldık


freq_table<-freq_table[order(freq_table$adet, decreasing = TRUE),] #tabloyu büyükten küçüğe sıraladık
row.names(freq_table)<-paste(1:nrow(freq_table)) #yerler değiştiği için tekrardan satır numaralarını gncelledim.
head(freq_table,16) #verilerin çıktısını alıyoruz
uyusturucu adet
Heroin 2529
AnyOpioid 2460
Fentanyl 2232
Cocaine 1521
Benzodiazepine 1343
Ethanol 1247
Oxycodone 607
Methadone 474
FentanylAnalogue 389
Amphet 159
Tramad 130
Hydrocodone 118
Oxymorphone 108
OpiateNOS 88
Morphine_NotHeroin 42
Hydromorphone 25

En çok ölüme sebep veren uyuşturucu eroin daha sonra Opiod içerikli ilaçlar gelmektedir.(bir nevi dopamin salgılatan ağrı kesiciler, vücutta morfin gibi etki gösterirler.) Bu listeyi daha iyi incelebilmek adına bar grafiği oluşturalım.

freq_table %>% ggplot(aes(x=reorder(uyusturucu,adet),adet),y=adet)+ #reorder ile büyükten küçüğe sıraladım.
  geom_bar(stat = "identity",fill="#56B4E9")+ #frekans tablosundan değer almasından dolayı stat="identifiy işaretlemeliyiz.
  coord_flip()+#değişken isimlerinin kolay okunması için 90° döndürdük.
 theme_bw()+
  labs(x="Etken Maddeler",
       title ="ölüme sebebiyet veren maddelerin kullanım sıklığı")

Elimizdeki veride ilgili maddelerin bağımlılık düzeylerine ilişkin bir bilgi yok fakat vikipedi üzerindeki maddelerin bağımlılık düzeyleri tablosuna bakarsak ilgili maddelerden ölümler şaşırtmayacaktır.

drugs

drugs

En çok ölüme sebebiyet veren uyuştucu etken maddeleri aynı zamanda en çok bağılımlılık yapan maddelerdir. Bu durumda insanların aşırı kullanımı ve maddeleri kullanmaktan kaçamalarıda aşırı dozdan/kazayla ölümlere sebebiyet verdiğini anlarız.Bu bilgi ışında etken maddelere göre ortalama ölüm yaşını öğrenelim.

3.3 Etken maddelerin ortalama ölüm yaşları

Öncelikli olarak ortalama ölüm dağılımlarını yani yaş değişkeni için histogramı çizelim.

plot(density(na.omit(drugs2$Age)), main="Ölüm yaşlarının dağılımı")

35 yaş civarında ve 50’li yaşlarda ölümler zirveye oturmaktadır.Fakat bu durumu en çok etkilen uyuşturucuları ortalama ölüm yaşlarını bulalım.

AgeDeath<-na.omit( drugs2[,c(3,19:34)]) #yas ve gereki olan etken madde değişkenleri seçildi
uyusturucular<-data.frame("EtkenMadde"=colnames(AgeDeath[2:ncol(AgeDeath)])) #ortalamaların eklenceği tablo oluşturuldu.

#ortalama medyan ve modu bulacağız.R'ın paketleri arasında mod'u hesaplayacak bir formül bulamadım.Bu senenle bu amaçla oluşturulmuş bir fonksiyon buldum.Onu kullanıyorum.
 mod <- function(x) {
  ux <- unique(x)
  tab <- tabulate(match(x, ux))
  ux[tab == max(tab)]
 
}


#döngü açıklaması: 1 numaralı değişken yaş değişkeni olması sebebiyle döngü 2 den başlamaktadır. Bununla beraber indeksleri 2 den başlatamayacağımız için i-1 ile doğru olarak başlatabiliriz.
#döngü her işlemde bir sütunu seçerek o sütunun ortalamasını yeni tablodaki ortalama sütununa atamaktadır.
 
for(i in 2:(ncol(AgeDeath))){
 uyusturucular$ortalama[i-1]<-AgeDeath$Age[AgeDeath[,i]==1] %>% mean()
 uyusturucular$medyan[i-1]<-AgeDeath$Age[AgeDeath[,i]==1] %>% median()
 uyusturucular$mod[i-1]<-AgeDeath$Age[AgeDeath[,i]==1] %>% mod()
 

}

print(uyusturucular[order(uyusturucular$ortalama, decreasing = FALSE),])
##            EtkenMadde ortalama medyan mod
## 11             Amphet 39.05031   38.0  38
## 3            Fentanyl 40.34350   39.0  33
## 1              Heroin 40.36062   40.0  29
## 4    FentanylAnalogue 41.12853   40.0  30
## 16          AnyOpioid 41.85482   41.0  33
## 2             Cocaine 42.82632   43.0  51
## 9      Benzodiazepine 43.18703   43.0  33
## 7             Ethanol 43.81957   45.0  49
## 10          Methadone 44.34388   45.0  48
## 6         Oxymorphone 44.36111   46.5  50
## 15          OpiateNOS 44.69318   44.0  56
## 5           Oxycodone 46.03295   48.0  50
## 8         Hydrocodone 47.88034   48.0  51
## 12             Tramad 48.47692   50.5  48
## 13 Morphine_NotHeroin 48.64286   50.5  45
## 14      Hydromorphone 49.56000   52.0  32

Ortalamalar ile medyanlar nerdeyse aynıdır yaş değişkenide normal dağılımdan çok farklı olmadığını görmüştük.Aslında eronin ölüm yaşı ortalamasını daha az olmasını beklerdim fakat tabloda 3.sırada gözükmektedir.Bununla beraber modu en düşük olan uyuşturcunun eroin olduğunu görmekteyiz.yaş ortalamasında da 1 senelik bir fark olduğunu düşünürsek en tehlikeli uyuşturucunun eroin olduğunu bir kez daha görmüş olmaktayız. Listenin başında amfetamin, diğer uyuşturculara nazaran veri setinde daha az görülmektedir fakat ölüm ortalamasında başı çektiğini görmekteyiz.

Bunlara ek olarak Ethanol aslında alkol bağımlılığı belirten bir değşkendir.Ortalama ölüm yaşının 45 ve en çok ölümün 49 yaşında olduğunu tablodan görebiliyoruz.Ölüme sebebiyet verenler listesinde 6.sırada ve ilk yasal madddedir.

Ayrıca ölümlerin bu maddeler dışında neler olabileceğine dair bir değişkenimiz daha var fakat bu değişkenin büyük bir kısmının NA olması sebebiyle analizimize dahil etmiyoruz.

3.4 Tarihlere göre ölümler

Ölümleri zamana göre durumunu resmedeceğiz. Öncelikli olarak zaman ifadesini güncelleyelim.

3.4.1 Kısa veri düzenlemesi

Veri setimizde bir adet date değişkeni vardır fakat formatını r’ın anlayabileceği bir hale getirmemiz gerekmektedir.

06/28/2014 12:00:00 AM değişken bu formattadır. Burda saat bilgisine ihtiyacımız yok bu sebeble saat ifadelerini değişkenden silip kalan ifadeyi kolaylıkla lubridate paketi ile tarih değişkeni olarak ayarlayabiliriz.

Not:lubridate zaman değişkenleri ile alakalı sorun çözebilmemizi sağlayan bir pakettir.

Öncelikli olarak Date değişkenimiz bir tarih değişkeni bu değişkeni zamanı ifade edecek şekilde güncelleyelim.

zaman_drug<-drugs2[complete.cases(drugs2$Date),] #veri setindeki zaman değişkeni eksik olmayan tüm değişkeni 
str_detect(zaman_drug$Date,"^\\d") %>% length() ==length(zaman_drug$Date) 
## [1] TRUE
#stringr paketinde \\d ifadesi sayısal verileri temsil eder. "^" ise ilk elemanın seçilmesini ifade etmektedir.yani ilk elemanı sayısal ifade olan değişkenlerin sayısı o sütuna komple eşit mi onu test ediyoruz.

Veri setindeki zaman değişkeninde hatalı bir ifade yok o zaman sadece tarihi içeren kısmı seçip date türüne çevirip ölümlerin grafiğini çizebiliriz.

library(lubridate)
zaman_drug$Date<-substr(zaman_drug$Date, start = 1, stop = 10) #substr ilk kaç elemanın seçileceğini sağlayan bir fonksiyondur.

head(zaman_drug$Date,2)
## [1] "06/28/2014" "03/21/2013"
zaman_drug$Date<-mdy(zaman_drug$Date) #m=month d=day y=years demek, bu şekilde tüm ifadeyi date değişkeni olarak atayabiliyoruz.

head(zaman_drug$Date,2)
## [1] "2014-06-28" "2013-03-21"
min(zaman_drug$Date)
## [1] "2012-01-01"

3.4.2 Grafiğin çizimi

tarih<-setNames(data.frame(table(zaman_drug$Date)),c("Date","Count"))
tarih$Date<-ymd(tarih$Date)
ggplot(tarih,aes(x=Date,y=Count))+geom_line()

Vaka sayılarının günlük olarak ifade edilmesinden dolayı tablo çok karmaşık bir hal aldı. Vakaları aylık olarak toplayalım ve o şekilde resmedelim.

ay=NA #tablo için değişken oluşturma 
adet=NA #tablo için değişken oluşturma
min_deger<-min(zaman_drug$Date) #tabldodaki en erken tarih
max_deger<-max(zaman_drug$Date) #tablodaki en geç tarih
i=1 # döngüde değişecek değer
while(min_deger<date(max_deger+days(1))){
  ay[i]=as.character(min_deger) #tarih değişkeni
  adet[i]= 
    nrow(zaman_drug[between(zaman_drug$Date,min_deger,(min_deger+months(1))),])
  min_deger=ymd(min_deger+months(1)) #o tarih aralığındaki satır sayılarının adet değişkeni atanması
  i=i+1 #döngüdeki artış
  {
  zaman_tablo<-data_frame("tarih"=ay,"adet"=adet) #while bittikten sonraki oluşturulacak tablo
  }
}
zaman_tablo$tarih<-ymd(zaman_tablo$tarih)
head(zaman_tablo) #tablomuz
tarih adet
2012-01-01 32
2012-02-01 28
2012-03-01 27
2012-04-01 31
2012-05-01 29
2012-06-01 29

Tablomuzu oluşturduk şimdi grafiğimizi çizelim.

min_deger<-min(zaman_drug$Date) #tabldodaki en erken tarih
max_deger<-max(zaman_drug$Date)

ggplot(zaman_tablo,aes(x=tarih,y=adet))+geom_line()

Ölümleri incelediğimizde tarihler ilerledikçe ölümlerin artmış olduğunu görmekteyiz. Bununla beraber grafik üzerinde görmek zor olsada kış mevsiminin başlangıcında ölüm oranlarının zirve yaptığı temmuz ayı civarında en düşük seviyeye indiği görülmektedir. Bu durum kış ayında insan bünyesinin daha zayıf olmasıyla alakalı olabilir.

3.5 Ölüm yerleri (hastane mi ev mi?)

w = table(drugs2$Location) %>% data.frame() #lokasyon sayıları toplandı

ggplot(w,aes(x=reorder(Var1,-Freq),Freq)) + #Freq değişkenine göre sıralandı
  geom_bar(stat ="identity",
           fill="powderblue")+ #renk verildi
  labs(title = "Ölünen yerler",x="lokasyonlar",y="Frekanslar")+ #eksenler isimlendirildi, tittle başlık x, x ekseni,y, yekseni
  theme_light()#arka plan düzenlendi.

Hastaların çok büyük bir kısmı evlerinde ölü bulunmuştur. Pek çok kişinin hastaneye gidemeden öldüğünü öğrenmekteyiz.

3.6 Etnik kimliğe göre ölüm yaşları

df_race<-drugs2 %>% filter(Race %in% c("Asian, Other",
                                       "Hispanic, Black",
                                       "Black",
                                       "Hispanic, White",
                                       "White",
                                       "Unknown",
                                       "Asian Indian",
                                        "Other"))  

#veri setinde neredeyse bulunmayan grafiği kötü gösteren değişkenler çıkartıldı.
ggplot(df_race,aes(y=Age))+geom_boxplot(aes(fill=Race))+
  labs(title = "milletlere göre ölüm yaşları",
       x="Etnik kimlikler")

Grafiği incelediğimizde ölüm yaşı en düşük etknik kimliğe sahip olanların hint kökenli asyalılar olduğunu ardından diğer asya kökenli milletlerin geldiğini görmekteyiz.Bununla beraber kazayla ölen en yaşlı etnik kimlik sahibinin siyahilerin olduğunu görmekteyiz.