2  Group Project: Agriculture in Turkey - Preprocessing

Published

November 19, 2022

BUSINESS PROBLEM

Agricultural production plays a key role in the independence and development of a country. In this project, we aim to analyze the changes in our agricultural production areas and products over the years and obtain output in Turkey.

DATA DESCRIPTION

Data is gathered from TUIK Agriculture Data

There are various different types of Agriculture data in TUIK. Datasets that we will use are:

PREPROCESS

Call necessary libraries

#install.packages("readxl")
library(readxl)
library(lubridate)
library(dplyr)
library(tidyverse)
library(ggplot2)
library(tidyr)

Load the TUIK data sets

tarim_raw = read_excel("data//tarım.xlsx")
tahil_raw = read_excel("data//tahıl.xlsx")
sebze_raw = read_excel("data//sebze.xlsx")
meyve_raw = read_excel("data//meyve.xlsx")

View the raw data

knitr::kable(head(tarim_raw),caption = "12-year agricultural area by province")
12-year agricultural area by province
İl Yıl Tarım Alanı - Dekar
Adana-1 2010 5506353
Adana-1 2011 4962979
Adana-1 2012 4807968
Adana-1 2013 4751612
Adana-1 2014 4982042
Adana-1 2015 4887150
knitr::kable(head(tahil_raw),caption = "12-year grain production by province")
12-year grain production by province
Tür İl Yıl Değer
Ekilen Alan ve 01.11.11.00.00. (Durum Buğdayı) - Dekar Adana-1 2010 8508
Ekilen Alan ve 01.11.12.00.00. (Buğday, Durum Buğdayı Hariç) - Dekar Adana-1 2010 2167738
Ekilen Alan ve 01.11.20.00.00. (Mısır) - Dekar Adana-1 2010 860354
Ekilen Alan ve 01.11.31.00.01. (Arpa (Biralık)) - Dekar Adana-1 2010 NA
Ekilen Alan ve 01.11.31.00.02. (Arpa (Diğer)) - Dekar Adana-1 2010 63190
Ekilen Alan ve 01.11.32.00.00. (Çavdar) - Dekar Adana-1 2010 1042
knitr::kable(head(sebze_raw),caption = "12-year vegetable production by province")
12-year vegetable production by province
Tür İl Yıl Değer
Ekilen Alan ve 01.11.61.00.01. (Fasulye, Taze) - Dekar Adana-1 2010 3640
Ekilen Alan ve 01.11.61.00.02. (Barbunya, Taze) - Dekar Adana-1 2010 600
Ekilen Alan ve 01.11.62.00.00. (Bezelye, Taze) - Dekar Adana-1 2010 5860
Ekilen Alan ve 01.11.69.00.01. (Börülce, Taze) - Dekar Adana-1 2010 55
Ekilen Alan ve 01.11.69.00.02. (Bakla, Taze) - Dekar Adana-1 2010 3240
Ekilen Alan ve 01.13.11.00.00. (Kuşkonmaz) - Dekar Adana-1 2010 NA
knitr::kable(head(meyve_raw),caption = "12-year agricultural area by province")
12-year agricultural area by province
Tür Yıl Adana-1 Adıyaman-2 Afyonkarahisar-3 Aksaray-68 Amasya-5 Ankara-6 Antalya-7 Ardahan-75 Artvin-8 Aydın-9 Ağrı-4 Balıkesir-10 Bartın-74 Batman-72 Bayburt-69 Bilecik-11 Bingöl-12 Bitlis-13 Bolu-14 Burdur-15 Bursa-16 Denizli-20 Diyarbakır-21 Düzce-81 Edirne-22 Elazığ-23 Erzincan-24 Erzurum-25 Eskişehir-26 Gaziantep-27 Giresun-28 Gümüşhane-29 Hakkari-30 Hatay-31 Isparta-32 Iğdır-76 Kahramanmaraş-46 Karabük-78 Karaman-70 Kars-36 Kastamonu-37 Kayseri-38 Kilis-79 Kocaeli-41 Konya-42 Kütahya-43 Kırklareli-39 Kırıkkale-71 Kırşehir-40 Malatya-44 Manisa-45 Mardin-47 Mersin-33 Muğla-48 Muş-49 Nevşehir-50 Niğde-51 Ordu-52 Osmaniye-80 Rize-53 Sakarya-54 Samsun-55 Siirt-56 Sinop-57 Sivas-58 Tekirdağ-59 Tokat-60 Trabzon-61 Tunceli-62 Uşak-64 Van-65 Yalova-77 Yozgat-66 Zonguldak-67 Çanakkale-17 Çankırı-18 Çorum-19 İstanbul-34 İzmir-35 Şanlıurfa-63 Şırnak-73
Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofralık Üzüm, Çekirdekli) - Adet Sayısı 2010 0 0 0 0 0 0 0 NA 0 0 NA 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 NA 0 0 0 0 0 0 0 0 0 0 0 0 0
Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.02. (Sofralık Üzüm, Çekirdeksiz) - Adet Sayısı 2010 0 0 0 NA NA 0 0 NA 0 0 NA 0 NA 0 NA NA 0 NA NA 0 0 0 0 NA NA NA NA NA 0 0 0 NA 0 0 0 NA NA NA NA NA NA NA NA 0 0 0 NA NA 0 NA 0 NA 0 0 NA NA NA NA NA NA NA NA NA 0 NA NA NA NA NA 0 NA NA NA 0 NA NA NA 0 0 NA NA
Meyve Veren Yaşta Ağaç Sayısı ve 01.21.12.01.01. (Şaraplık Üzümler) - Adet Sayısı 2010 0 0 NA NA 0 0 0 NA NA 0 NA 0 NA NA NA NA NA NA NA 0 NA 0 0 0 0 0 NA NA 0 0 NA NA NA 0 0 NA 0 0 0 NA NA 0 0 NA 0 0 0 0 0 0 0 0 0 0 NA 0 0 NA NA NA NA NA NA NA NA 0 0 NA 0 0 NA NA NA NA 0 0 0 0 0 0 NA
Meyve Veren Yaşta Ağaç Sayısı ve 01.21.12.02.01. (Kurutmalık Üzüm, Çekirdekli) - Adet Sayısı 2010 0 0 0 0 NA NA 0 NA NA NA NA 0 NA 0 NA 0 NA 0 NA 0 NA 0 0 NA NA NA NA NA 0 0 NA NA 0 NA 0 NA 0 NA 0 NA NA 0 0 0 0 NA NA 0 0 0 0 0 0 0 NA 0 0 NA 0 NA NA NA NA NA NA NA NA NA NA 0 NA NA NA NA NA NA NA 0 0 0 0
Meyve Veren Yaşta Ağaç Sayısı ve 01.21.12.02.02. (Kurutmalık Üzüm, Çekirdeksiz) - Adet Sayısı 2010 NA NA NA 0 NA NA 0 NA NA 0 NA 0 NA 0 NA NA NA NA NA 0 NA 0 0 NA NA NA NA NA 0 NA NA NA 0 NA NA NA NA NA NA NA NA NA NA NA 0 NA NA NA NA NA 0 NA NA 0 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 0 NA NA NA NA NA NA NA NA 0 NA 0
Meyve Veren Yaşta Ağaç Sayısı ve 01.22.11.00.00. (Avokado) - Adet Sayısı 2010 NA NA NA NA NA NA 16895 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA 2745 1410 NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA NA

Fix the column names

new_cols <- c("province","year","decare")
colnames(tarim_raw) <- new_cols
tarim <-tarim_raw
new_cols <- c("vegetable_type","province","year","decare")
colnames(sebze_raw) <- new_cols
new_cols <- c("grain_type","province","year","decare")
colnames(tahil_raw) <- new_cols

Transform Meyve Dataset

meyve <- meyve_raw %>% pivot_longer(cols = 'Adana-1':'Şırnak-73', names_to = 'province',
         values_to = 'production') 
meyve
# A tibble: 297,675 × 4
   Tür                                                     Yıl   provi…¹ produ…²
   <chr>                                                   <chr> <chr>     <dbl>
 1 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Adana-1       0
 2 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Adıyam…       0
 3 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Afyonk…       0
 4 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Aksara…       0
 5 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Amasya…       0
 6 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Ankara…       0
 7 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Antaly…       0
 8 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Ardaha…      NA
 9 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Artvin…       0
10 Meyve Veren Yaşta Ağaç Sayısı ve 01.21.11.01.01. (Sofr… 2010  Aydın-9       0
# … with 297,665 more rows, and abbreviated variable names ¹​province,
#   ²​production

Rename the meyve dataset columns

new_cols <- c("fruit_type","year","province","production")
colnames(meyve) <- new_cols

Separate the Columns

Separate Product name and product types

tahil_v1 <- separate(data = tahil_raw, col = grain_type, into = c("main_type", "product_type"), sep = " ve ")

tahil <- separate(data = tahil_v1, col = product_type, into = c("product_type", "unit"), sep = "-")

tahil <- separate(tahil, product_type, into = c("product_code", "product_name"), sep = "^\\S*\\K\\s+")

sebze_v1 <- separate(data = sebze_raw, col = vegetable_type, into = c("main_type", "product_type"), sep = " ve ")

sebze <- separate(data = sebze_v1, col = product_type, into = c("product_type", "unit"), sep = "-")

sebze <-separate(sebze, product_type, into = c("product_code", "product_name"), sep = "^\\S*\\K\\s+")

meyve_v1 <- separate(data = meyve, col = fruit_type, into = c("main_type", "product_type"), sep = " ve ")

meyve <- separate(data = meyve_v1, col = product_type, into = c("product_type", "unit"), sep = "-")

meyve <-separate(meyve, product_type, into = c("product_code", "product_name"), sep = "^\\S*\\K\\s+")

Separate province names and province codes

tarim <- separate(data = tarim, col = province, into = c("province", "province_code"), sep = "-")

tahil <- separate(data = tahil, col = province, into = c("province", "province_code"), sep = "-")

meyve <- separate(data = meyve, col = province, into = c("province", "province_code"), sep = "-")

sebze <- separate(data = sebze, col = province, into = c("province", "province_code"), sep = "-")

Remove paranthesis characters from product_name columns

tahil$product_name <- gsub("[()]", "", tahil$product_name)
meyve$product_name <- gsub("[()]", "", meyve$product_name)
sebze$product_name <- gsub("[()]", "", sebze$product_name)

Remove spaces at the beginning and at the end of the “unit” column

tahil$unit = str_trim(tahil$unit)
sebze$unit = str_trim(sebze$unit)
meyve$unit = str_trim(meyve$unit)

Check the Data Types

view the data types

str(tarim)
tibble [972 × 4] (S3: tbl_df/tbl/data.frame)
 $ province     : chr [1:972] "Adana" "Adana" "Adana" "Adana" ...
 $ province_code: chr [1:972] "1" "1" "1" "1" ...
 $ year         : chr [1:972] "2010" "2011" "2012" "2013" ...
 $ decare       : num [1:972] 5506353 4962979 4807968 4751612 4982042 ...
str(sebze)
tibble [103,530 × 8] (S3: tbl_df/tbl/data.frame)
 $ main_type    : chr [1:103530] "Ekilen Alan" "Ekilen Alan" "Ekilen Alan" "Ekilen Alan" ...
 $ product_code : chr [1:103530] "01.11.61.00.01." "01.11.61.00.02." "01.11.62.00.00." "01.11.69.00.01." ...
 $ product_name : chr [1:103530] "Fasulye, Taze " "Barbunya, Taze " "Bezelye, Taze " "Börülce, Taze " ...
 $ unit         : chr [1:103530] "Dekar" "Dekar" "Dekar" "Dekar" ...
 $ province     : chr [1:103530] "Adana" "Adana" "Adana" "Adana" ...
 $ province_code: chr [1:103530] "1" "1" "1" "1" ...
 $ year         : chr [1:103530] "2010" "2010" "2010" "2010" ...
 $ decare       : num [1:103530] 3640 600 5860 55 3240 NA 2280 220 NA 30 ...
str(sebze)
tibble [103,530 × 8] (S3: tbl_df/tbl/data.frame)
 $ main_type    : chr [1:103530] "Ekilen Alan" "Ekilen Alan" "Ekilen Alan" "Ekilen Alan" ...
 $ product_code : chr [1:103530] "01.11.61.00.01." "01.11.61.00.02." "01.11.62.00.00." "01.11.69.00.01." ...
 $ product_name : chr [1:103530] "Fasulye, Taze " "Barbunya, Taze " "Bezelye, Taze " "Börülce, Taze " ...
 $ unit         : chr [1:103530] "Dekar" "Dekar" "Dekar" "Dekar" ...
 $ province     : chr [1:103530] "Adana" "Adana" "Adana" "Adana" ...
 $ province_code: chr [1:103530] "1" "1" "1" "1" ...
 $ year         : chr [1:103530] "2010" "2010" "2010" "2010" ...
 $ decare       : num [1:103530] 3640 600 5860 55 3240 NA 2280 220 NA 30 ...
str(meyve)
tibble [297,675 × 8] (S3: tbl_df/tbl/data.frame)
 $ main_type    : chr [1:297675] "Meyve Veren Yaşta Ağaç Sayısı" "Meyve Veren Yaşta Ağaç Sayısı" "Meyve Veren Yaşta Ağaç Sayısı" "Meyve Veren Yaşta Ağaç Sayısı" ...
 $ product_code : chr [1:297675] "01.21.11.01.01." "01.21.11.01.01." "01.21.11.01.01." "01.21.11.01.01." ...
 $ product_name : chr [1:297675] "Sofralık Üzüm, Çekirdekli " "Sofralık Üzüm, Çekirdekli " "Sofralık Üzüm, Çekirdekli " "Sofralık Üzüm, Çekirdekli " ...
 $ unit         : chr [1:297675] "Adet Sayısı" "Adet Sayısı" "Adet Sayısı" "Adet Sayısı" ...
 $ year         : chr [1:297675] "2010" "2010" "2010" "2010" ...
 $ province     : chr [1:297675] "Adana" "Adıyaman" "Afyonkarahisar" "Aksaray" ...
 $ province_code: chr [1:297675] "1" "2" "3" "68" ...
 $ production   : num [1:297675] 0 0 0 0 0 0 0 NA 0 0 ...

Convert the Data Types

Convert Year column to Date type

tarim$year <- year(as.Date(tarim$year, format = "%Y"))
tahil$year <- year(as.Date(tahil$year, format = "%Y"))
meyve$year <- year(as.Date(meyve$year, format = "%Y"))
sebze$year <- year(as.Date(sebze$year, format = "%Y"))

Check Missing values

sum(is.na(tarim))
[1] 0
sum(is.na(tahil));
[1] 190210
sum(is.na(meyve))
[1] 162452
sum(is.na(sebze))
[1] 42723

If we remove the NAs, we may miss the provinces where some agriculture products are not produced/ or TUIK cannot get any information. So we first check whether there are 0 values

tahil %>%
  filter(decare==0)
# A tibble: 475 × 8
   main_type         product_code    produc…¹ unit  provi…² provi…³  year decare
   <chr>             <chr>           <chr>    <chr> <chr>   <chr>   <dbl>  <dbl>
 1 Ekilen Alan       01.19.31.09.00. "Yonca … Dekar Afyonk… 3        2010      0
 2 Hasat Edilen Alan 01.19.31.09.00. "Yonca … Dekar Afyonk… 3        2010      0
 3 Ekilen Alan       01.19.31.05.00. "Korung… Dekar Aksaray 68       2010      0
 4 Ekilen Alan       01.19.31.09.00. "Yonca … Dekar Aksaray 68       2010      0
 5 Hasat Edilen Alan 01.19.31.05.00. "Korung… Dekar Aksaray 68       2010      0
 6 Hasat Edilen Alan 01.19.31.09.00. "Yonca … Dekar Aksaray 68       2010      0
 7 Ekilen Alan       01.19.31.05.00. "Korung… Dekar Ardahan 75       2010      0
 8 Hasat Edilen Alan 01.19.31.05.00. "Korung… Dekar Ardahan 75       2010      0
 9 Ekilen Alan       01.19.31.05.00. "Korung… Dekar Artvin  8        2010      0
10 Ekilen Alan       01.19.31.09.00. "Yonca … Dekar Artvin  8        2010      0
# … with 465 more rows, and abbreviated variable names ¹​product_name,
#   ²​province, ³​province_code

As it is seen from above there are 0 values, so we cannot sure what NA means in this dataset, so we will leave as it is.

View the Datasets

knitr::kable(head(tarim),caption = "12-year agricultural area by province")
12-year agricultural area by province
province province_code year decare
Adana 1 2010 5506353
Adana 1 2011 4962979
Adana 1 2012 4807968
Adana 1 2013 4751612
Adana 1 2014 4982042
Adana 1 2015 4887150
knitr::kable(head(meyve,caption = "12-year fruit production by province"))
main_type product_code product_name unit year province province_code production
Meyve Veren Yaşta Ağaç Sayısı 01.21.11.01.01. Sofralık Üzüm, Çekirdekli Adet Sayısı 2010 Adana 1 0
Meyve Veren Yaşta Ağaç Sayısı 01.21.11.01.01. Sofralık Üzüm, Çekirdekli Adet Sayısı 2010 Adıyaman 2 0
Meyve Veren Yaşta Ağaç Sayısı 01.21.11.01.01. Sofralık Üzüm, Çekirdekli Adet Sayısı 2010 Afyonkarahisar 3 0
Meyve Veren Yaşta Ağaç Sayısı 01.21.11.01.01. Sofralık Üzüm, Çekirdekli Adet Sayısı 2010 Aksaray 68 0
Meyve Veren Yaşta Ağaç Sayısı 01.21.11.01.01. Sofralık Üzüm, Çekirdekli Adet Sayısı 2010 Amasya 5 0
Meyve Veren Yaşta Ağaç Sayısı 01.21.11.01.01. Sofralık Üzüm, Çekirdekli Adet Sayısı 2010 Ankara 6 0
knitr::kable(head(sebze),caption = "12-year vegetable production by province")
12-year vegetable production by province
main_type product_code product_name unit province province_code year decare
Ekilen Alan 01.11.61.00.01. Fasulye, Taze Dekar Adana 1 2010 3640
Ekilen Alan 01.11.61.00.02. Barbunya, Taze Dekar Adana 1 2010 600
Ekilen Alan 01.11.62.00.00. Bezelye, Taze Dekar Adana 1 2010 5860
Ekilen Alan 01.11.69.00.01. Börülce, Taze Dekar Adana 1 2010 55
Ekilen Alan 01.11.69.00.02. Bakla, Taze Dekar Adana 1 2010 3240
Ekilen Alan 01.13.11.00.00. Kuşkonmaz Dekar Adana 1 2010 NA
knitr::kable(head(tahil),caption = "12-year grain production by province")
12-year grain production by province
main_type product_code product_name unit province province_code year decare
Ekilen Alan 01.11.11.00.00. Durum Buğdayı Dekar Adana 1 2010 8508
Ekilen Alan 01.11.12.00.00. Buğday, Durum Buğdayı Hariç Dekar Adana 1 2010 2167738
Ekilen Alan 01.11.20.00.00. Mısır Dekar Adana 1 2010 860354
Ekilen Alan 01.11.31.00.01. Arpa Biralık Dekar Adana 1 2010 NA
Ekilen Alan 01.11.31.00.02. Arpa Diğer Dekar Adana 1 2010 63190
Ekilen Alan 01.11.32.00.00. Çavdar Dekar Adana 1 2010 1042

Save the final datasets

saveRDS(tarim, file = "data//tarim.rds")
saveRDS(tahil, file ="data//tahil.rds")
saveRDS(meyve, file ="data//meyve.rds")
saveRDS(sebze, file ="data//sebze.rds")

Save other datasets

turkey = read_excel("data//turkey.xlsx")
saveRDS(turkey, file = "data//turkey.rds")