English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية
R come strumento statistico professionale, se solo potesse importare e esportare dati manualmente, la sua funzione diventerebbe priva di senso, quindi R supporta l'acquisizione in blocco di dati da file di formato di archiviazione tabellare popolari (ad esempio CSV, Excel, XML, ecc.).
CSV (Valori Separati da Comma, CSV, a volte anche chiamato Valori Separati da Carattere, poiché il carattere di separazione non deve necessariamente essere una virgola) è un formato di file di archiviazione tabellare molto popolare, adatto a memorizzare dati di dimensioni medie o piccole.
Poiché la maggior parte dei software supporta questo formato di file, è spesso utilizzato per lo stoccaggio e l'interazione dei dati.
CSV è essenzialmente un testo, il suo formato di file è estremamente semplice: i dati sono salvati riga per riga come testo, ogni record è separato da un delimitatore di campo e ogni record ha la stessa sequenza di campi.
Di seguito è riportato un file sites.csv semplice (memorizzato nella stessa directory del programma di test):
id,name,url,likes 1,Google,www.google.com,111 2,w3codebox,it.oldtoolbag.com,222 3,Taobao,www.taobao.com,333
Il file CSV utilizza la virgola per separare le colonne, se i dati contengono virgole, devono essere racchiusi in virgolette doppi l'intero blocco di dati.
Attenzione:Attenzione per i testi che contengono caratteri non inglesi: prestare attenzione alla codifica di salvataggio. Poiché molti computer utilizzano普遍mente la codifica UTF-8, ho salvato utilizzando UTF-8.
Attenzione: L'ultima riga del file CSV deve contenere una riga vuota, altrimenti verranno visualizzati messaggi di avviso durante l'esecuzione del programma.
Messaggio di avviso: In read.table(file = file, header = header, sep = sep, quote = quote, : incomplete final line found by readTableHeader on 'sites.csv'
Poi possiamo utilizzare la funzione read.csv() per leggere i dati del file CSV:
data <- read.csv("sites.csv", encoding="UTF-8") print(data)
Se non si imposta l'attributo encoding, la funzione read.csv() legge il testo con la codifica di testo predefinita del sistema operativo. Se si utilizza un sistema operativo Windows in cinese e non si è impostato mai la codifica di testo predefinita del sistema, la codifica predefinita dovrebbe essere GBK. Pertanto, si prega di unificare il codice di testo il più possibile per evitare errori.
执行以上代码输出结果为:
id name url likes 1 1 Google www.google.com 111 2 2 w3codebox it.oldtoolbag.com 222 3 3 Taobao www.taobao.com 333
La funzione read.csv() restituisce una scatola dei dati, possiamo facilmente effettuare trattamenti statistici sui dati. Ecco un esempio per controllare il numero di righe e colonne:
data <- read.csv("sites.csv", encoding="UTF-8") print(is.data.frame(data)) # vedere se è una scatola dei dati print(ncol(data)) # colonne print(nrow(data)) # righe
执行以上代码输出结果为:
[1] TRUE [1] 4 [1] 3
Ecco i dati con il campo likes maggiore nella statistica della scatola dei dati:
data <- read.csv("sites.csv", encoding="UTF-8") # likes maggiore dati like <- max(data$likes) print(like)
执行以上代码输出结果为:
[1] 333
Possiamo anche specificare le condizioni di ricerca, simili a una clausola WHERE di SQL, per interrogare i dati. Per farlo, è necessario utilizzare la funzione subset()。
Ecco un esempio per trovare dati con likes tra 222 e:
data <- read.csv("sites.csv", encoding="UTF-8") # likes 为 222 的数据 retval <- subset(data, likes == 222) print(retval)
执行以上代码输出结果为:
id name url likes 2 2 w3codebox it.oldtoolbag.com 222
Attenzione条件语句等于使用 ==。
Condizioni multiple sono separate dal simbolo &. Ecco un esempio per trovare dati con likes maggiore di 1 e name uguale a w3codebox:
data <- read.csv("sites.csv", encoding="UTF-8") # likes maggiore di 1 dati con name uguale a w3codebox retval <- subset(data, likes > 1 & name=="w3codebox") print(retval)
执行以上代码输出结果为:
id name url likes 2 2 w3codebox it.oldtoolbag.com 222
R 语言可以使用 write.csv() 函数将数据保存为 CSV 文件。
接着以上示例,我们将 likes 为 222 的数据 保存到 w3codebox.csv 文件:
data <- read.csv("sites.csv", encoding="UTF-8") # likes 为 222 的数据 retval <- subset(data, likes == 222) # 写入新的文件 write.csv(retval,"w3codebox.csv") newdata <- read.csv("w3codebox.csv") print(newdata)
执行以上代码输出结果为:
X id name url likes 1 2 2 w3codebox it.oldtoolbag.com 222
X 来自数据集 newper,可以通过参数 row.names = FALSE 来删除它:
data <- read.csv("sites.csv", encoding="UTF-8") # likes 为 222 的数据 retval <- subset(data, likes == 222) # 写入新的文件 write.csv(retval,"w3codebox.csv", row.names = FALSE) newdata <- read.csv("w3codebox.csv") print(newdata)
执行以上代码输出结果为:
id name url likes 1 2 w3codebox it.oldtoolbag.com 222
执行完毕后,我们就可以看到 w3codebox.csv 文件生成成功了。