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