R - File CSV

In R, possiamo leggere i dati dai file archiviati al di fuori dell'ambiente R. Possiamo anche scrivere dati in file che verranno archiviati e accessibili dal sistema operativo. R può leggere e scrivere in vari formati di file come csv, excel, xml ecc.

In questo capitolo impareremo a leggere i dati da un file csv e poi scrivere i dati in un file csv. Il file dovrebbe essere presente nella directory di lavoro corrente in modo che R possa leggerlo. Ovviamente possiamo anche impostare la nostra directory e leggere i file da lì.

Recupero e impostazione della directory di lavoro

È possibile controllare a quale directory punta lo spazio di lavoro R utilizzando getwd()funzione. Puoi anche impostare una nuova directory di lavoro usandosetwd()funzione.

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

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

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Questo risultato dipende dal tuo sistema operativo e dalla directory corrente in cui stai lavorando.

Input come file CSV

Il file csv è un file di testo in cui i valori nelle colonne sono separati da una virgola. Consideriamo i seguenti dati presenti nel file denominatoinput.csv.

È possibile creare questo file utilizzando il blocco note di Windows copiando e incollando questi dati. Salva il file comeinput.csv utilizzando l'opzione Salva come tutti i file (*. *) nel blocco note.

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

Leggere un file CSV

Di seguito è riportato un semplice esempio di read.csv() funzione per leggere un file CSV disponibile nella directory di lavoro corrente -

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Analisi del file CSV

Per impostazione predefinita, il file read.csv()la funzione fornisce l'output come frame di dati. Questo può essere facilmente verificato come segue. Inoltre possiamo controllare il numero di colonne e righe.

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

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Una volta letti i dati in un data frame, possiamo applicare tutte le funzioni applicabili ai data frame come spiegato nella sezione successiva.

Ottieni lo stipendio massimo

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

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

[1] 843.25

Ottieni i dettagli della persona con lo stipendio massimo

Possiamo recuperare righe che soddisfano criteri di filtro specifici simili a una clausola where SQL.

# 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)

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Ottieni tutte le persone che lavorano nel reparto IT

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

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Ottieni le persone nel reparto IT il cui stipendio è superiore a 600

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

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Ottieni le persone che si sono iscritte a partire dal 2014

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

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

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Scrittura in un file CSV

R può creare file CSV dal data frame esistente. Ilwrite.csv()viene utilizzata per creare il file csv. Questo file viene creato nella directory di lavoro.

# 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)

Quando eseguiamo il codice sopra, produce il seguente risultato:

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

Qui la colonna X proviene dal set di dati newper. Questo può essere eliminato utilizzando parametri aggiuntivi durante la scrittura del file.

# 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)

Quando eseguiamo il codice sopra, produce il seguente risultato:

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