R - CSV Dosyaları

R'de, R ortamı dışında depolanan dosyalardan verileri okuyabiliriz. Ayrıca, işletim sistemi tarafından saklanacak ve erişilecek dosyalara da veri yazabiliriz. R, csv, excel, xml vb. Gibi çeşitli dosya formatlarını okuyabilir ve yazabilir.

Bu bölümde bir csv dosyasından veri okumayı ve ardından bir csv dosyasına veri yazmayı öğreneceğiz. Dosya, R'nin okuyabilmesi için geçerli çalışma dizininde bulunmalıdır. Elbette kendi dizinimizi de ayarlayabilir ve oradan dosya okuyabiliriz.

Çalışma Dizinini Alma ve Ayarlama

R çalışma alanının hangi dizine işaret ettiğini kontrol edebilirsiniz. getwd()işlevi. Ayrıca yeni bir çalışma dizini de ayarlayabilirsiniz.setwd()işlevi.

# Get and print current working directory.
print(getwd())

# Set current working directory.
setwd("/web/com")

# Get and print current working directory.
print(getwd())

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

[1] "/web/com/1441086124_2016"
[1] "/web/com"

Bu sonuç, işletim sisteminize ve çalıştığınız mevcut dizininize bağlıdır.

CSV Dosyası olarak gir

Csv dosyası, sütunlardaki değerlerin virgülle ayrıldığı bir metin dosyasıdır. Adlı dosyada bulunan aşağıdaki verileri düşüneliminput.csv.

Bu dosyayı, bu verileri kopyalayıp yapıştırarak Windows not defteri kullanarak oluşturabilirsiniz. Dosyayı farklı kaydedininput.csv Not defterinde Tüm dosyalar olarak kaydet (*. *) seçeneğini kullanarak.

id,name,salary,start_date,dept
1,Rick,623.3,2012-01-01,IT
2,Dan,515.2,2013-09-23,Operations
3,Michelle,611,2014-11-15,IT
4,Ryan,729,2014-05-11,HR
5,Gary,843.25,2015-03-27,Finance
6,Nina,578,2013-05-21,IT
7,Simon,632.8,2013-07-30,Operations
8,Guru,722.5,2014-06-17,Finance

CSV Dosyasını Okumak

Aşağıdaki basit bir örnektir read.csv() mevcut çalışma dizininizde bulunan bir CSV dosyasını okuma işlevi -

data <- read.csv("input.csv")
print(data)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

id,   name,    salary,   start_date,     dept
1      1    Rick     623.30    2012-01-01      IT
2      2    Dan      515.20    2013-09-23      Operations
3      3    Michelle 611.00    2014-11-15      IT
4      4    Ryan     729.00    2014-05-11      HR
5     NA    Gary     843.25    2015-03-27      Finance
6      6    Nina     578.00    2013-05-21      IT
7      7    Simon    632.80    2013-07-30      Operations
8      8    Guru     722.50    2014-06-17      Finance

CSV Dosyasını Analiz Etme

Varsayılan olarak read.csv()işlevi, çıktıyı bir veri çerçevesi olarak verir. Bu, aşağıdaki şekilde kolayca kontrol edilebilir. Ayrıca sütun ve satır sayısını da kontrol edebiliriz.

data <- read.csv("input.csv")

print(is.data.frame(data))
print(ncol(data))
print(nrow(data))

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

[1] TRUE
[1] 5
[1] 8

Bir veri çerçevesindeki verileri okuduktan sonra, sonraki bölümde açıklandığı gibi veri çerçevelerine uygulanabilir tüm işlevleri uygulayabiliriz.

Maksimum maaşı alın

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)
print(sal)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

[1] 843.25

Maksimum maaşı olan kişinin detaylarını öğrenin

SQL where cümlesine benzer belirli filtre kriterlerini karşılayan satırları getirebiliriz.

# Create a data frame.
data <- read.csv("input.csv")

# Get the max salary from data frame.
sal <- max(data$salary)

# Get the person detail having max salary.
retval <- subset(data, salary == max(salary))
print(retval)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

id    name  salary  start_date    dept
5     NA    Gary  843.25  2015-03-27    Finance

BT departmanında çalışan tüm insanları alın

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset( data, dept == "IT")
print(retval)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

id   name      salary   start_date   dept
1      1    Rick      623.3    2012-01-01   IT
3      3    Michelle  611.0    2014-11-15   IT
6      6    Nina      578.0    2013-05-21   IT

Maaşı 600'ün üzerinde olan kişileri bilgi işlem departmanına alın

# Create a data frame.
data <- read.csv("input.csv")

info <- subset(data, salary > 600 & dept == "IT")
print(info)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

id   name      salary   start_date   dept
1      1    Rick      623.3    2012-01-01   IT
3      3    Michelle  611.0    2014-11-15   IT

2014'te veya sonrasında katılan kişileri alın

# Create a data frame.
data <- read.csv("input.csv")

retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))
print(retval)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

id   name     salary   start_date    dept
3      3    Michelle 611.00   2014-11-15    IT
4      4    Ryan     729.00   2014-05-11    HR
5     NA    Gary     843.25   2015-03-27    Finance
8      8    Guru     722.50   2014-06-17    Finance

CSV Dosyasına Yazmak

R, mevcut veri çerçevesinden csv dosyası oluşturabilir. write.csv()işlevi csv dosyasını oluşturmak için kullanılır. Bu dosya çalışma dizininde oluşturulur.

# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))

# Write filtered data into a new file.
write.csv(retval,"output.csv")
newdata <- read.csv("output.csv")
print(newdata)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

X      id   name      salary   start_date    dept
1 3      3    Michelle  611.00   2014-11-15    IT
2 4      4    Ryan      729.00   2014-05-11    HR
3 5     NA    Gary      843.25   2015-03-27    Finance
4 8      8    Guru      722.50   2014-06-17    Finance

Burada X sütunu, yeni veri kümesinden gelir. Bu, dosya yazılırken ek parametreler kullanılarak bırakılabilir.

# Create a data frame.
data <- read.csv("input.csv")
retval <- subset(data, as.Date(start_date) > as.Date("2014-01-01"))

# Write filtered data into a new file.
write.csv(retval,"output.csv", row.names = FALSE)
newdata <- read.csv("output.csv")
print(newdata)

Yukarıdaki kodu çalıştırdığımızda şu sonucu verir -

id    name      salary   start_date    dept
1      3    Michelle  611.00   2014-11-15    IT
2      4    Ryan      729.00   2014-05-11    HR
3     NA    Gary      843.25   2015-03-27    Finance
4      8    Guru      722.50   2014-06-17    Finance