官术网_书友最值得收藏!

1.4.4 數(shù)據(jù)的導(dǎo)入導(dǎo)出

1.?dāng)?shù)據(jù)文件的導(dǎo)入與導(dǎo)出

我們常用外部保存的數(shù)據(jù)文件來繪制圖表。此時,就需要借助可以導(dǎo)入數(shù)據(jù)的函數(shù)導(dǎo)入不同格式的數(shù)據(jù),包括CSV、TXT,以及Excel、SQL、HTML等數(shù)據(jù)文件。有時候,我們也需要將處理好的數(shù)據(jù)從R語言中導(dǎo)出保存。其中,我們在數(shù)據(jù)可視化中使用最多的就是前3種格式的數(shù)據(jù)文件。

(1)CSV格式數(shù)據(jù)的導(dǎo)入與導(dǎo)出

使用read.csv()函數(shù),可以導(dǎo)入CSV格式的數(shù)據(jù),并存儲為數(shù)據(jù)框形式。需要注意是:當(dāng)stringsAsFactors=TRUE時,R會自動將讀入的字符型變量轉(zhuǎn)換成因子,但是這樣很容易導(dǎo)致數(shù)據(jù)只按默認(rèn)字母順序展示。在導(dǎo)入大批量數(shù)據(jù)時,為了提高性能,盡可能分兩步走:

①顯式指定“stringsAsFactors = FALSE”;

②依次將所需要的數(shù)據(jù)列(向量)轉(zhuǎn)換為因子。

        mydata<-read.csv("Data.csv", sep=", ", na.strings="NA", stringsAsFactors=FALSE)

使用write.csv()函數(shù),可以將data.frame的數(shù)據(jù)存儲為CSV文件

        write.csv(mydata, file = "File.csv")

CSV文件主要有以下3個特點(diǎn)。

①文件結(jié)構(gòu)簡單,基本上和TXT文本的差別不大;

②可以和Excel進(jìn)行轉(zhuǎn)換,這是一個很大的優(yōu)點(diǎn),很容易進(jìn)行查看模式轉(zhuǎn)換,但是其文件的存儲大小比Excel小。

③由于其簡單的存儲方式,一方面可以減少存儲信息的容量,這樣有利于網(wǎng)絡(luò)傳輸以及客戶端的再處理;另一方面,由于是一堆沒有任何說明的數(shù)據(jù),其具備基本的安全性。所以相比TXT和Excel數(shù)據(jù)文件,我們更加推薦使用CSV格式的數(shù)據(jù)文件進(jìn)行導(dǎo)入與導(dǎo)出操作。

(2)TXT格式數(shù)據(jù)的導(dǎo)入與導(dǎo)出

使用read.table()函數(shù)不僅可以導(dǎo)入CSV格式的文件數(shù)據(jù),還可以導(dǎo)入TXT格式的文件數(shù)據(jù),并存儲為數(shù)據(jù)框數(shù)據(jù)。

        mydata<-read.table("Data.txt", header = TRUE)

使用write.table()函數(shù)可以將data.frame的數(shù)據(jù)存儲為CSV文件:

        write.table(mydata, file = "File.txt")

(3)Excel格式數(shù)據(jù)的導(dǎo)入與導(dǎo)出

使用xlsx包更多關(guān)于xlsx包的使用可參考:https://github.com/colearendt/xlsx的read.xlsx()函數(shù)和read.xlsx2()函數(shù)可以導(dǎo)入XLSX格式的數(shù)據(jù)文件。但是更推薦使用CSV格式導(dǎo)入數(shù)據(jù)文件。

        mydata<- read.xlsx("Data.xlsx", sheetIndex=1)

也可以使用write.xlsx()函將數(shù)據(jù)文件導(dǎo)出為XLSX格式:

        write.xlsx(mydata, "Data.xlsx", sheetName="Sheet Name")

需要注意的是:使用R ggplot2繪圖時,通常使用一維數(shù)據(jù)列表的數(shù)據(jù)框。但是如果有時候?qū)氲臄?shù)據(jù)表格是二維數(shù)據(jù)列表,那么我們需要使用reshape2包的melt()函數(shù)或者tidyr包的gather()函數(shù),可以將二維數(shù)據(jù)列表的數(shù)據(jù)框轉(zhuǎn)換成一維數(shù)據(jù)列表。

一維數(shù)據(jù)列表和二維數(shù)據(jù)列表的區(qū)別

一維數(shù)據(jù)列表就是由字段和記錄組成的表格。一般來說字段在首行,下面每一行是一條記錄。一維數(shù)據(jù)列表通常可以作為數(shù)據(jù)分析的數(shù)據(jù)源,每一行代表完整的一條數(shù)據(jù)記錄,所以可以很方便地進(jìn)行數(shù)據(jù)的錄入、更新、查詢、匹配等,如圖1-4-3所示。

圖1-4-3 一維數(shù)據(jù)列表

二維數(shù)據(jù)列表就是行和列都有字段,它們相交的位置是數(shù)值的表格。這類表格一般是由分類匯總得來的,既有分類,又有匯總,所以是通過一維數(shù)據(jù)列表加工處理過的,通常用于呈現(xiàn)展示,如圖1-4-4所示。

圖1-4-4 二維數(shù)據(jù)列表

一維數(shù)據(jù)列表也常被稱為流水線表格,它和二維數(shù)據(jù)列表做出的數(shù)據(jù)透視表最大的區(qū)別在于“行總計(jì)”。判斷數(shù)據(jù)是一維數(shù)據(jù)列表還是二維數(shù)據(jù)列表的一個最簡單的辦法,就是看其列的內(nèi)容:每一列是否是一個獨(dú)立的參數(shù)。如果每一列都是獨(dú)立的參數(shù)那就是一維數(shù)據(jù)列表,如果每一列都是同類參數(shù)那就是二維數(shù)據(jù)列表。

注意為了后期更好地創(chuàng)建各種類型的數(shù)據(jù)透視表,建議用戶在數(shù)據(jù)錄入時,采用一維數(shù)據(jù)列表形式的進(jìn)行數(shù)據(jù)錄入,避免采用二維數(shù)據(jù)列表的形式對數(shù)據(jù)進(jìn)行錄入。

2.缺失值的處理

有時候,我們導(dǎo)入的數(shù)據(jù)存在缺失值。另外,在統(tǒng)計(jì)與計(jì)算中,缺失值也起著至關(guān)重要的作用。R語言中主要有兩種類型的缺失數(shù)據(jù):NA和NULL。

(1)NA

在R中,使用NA代替缺失數(shù)據(jù)作為向量中的另外一種元素出現(xiàn)。我們可以使用is.na()函數(shù)來檢查向量或數(shù)據(jù)框中的每個元素是否缺失數(shù)據(jù)。我們先構(gòu)造一個含有缺失數(shù)據(jù)的數(shù)據(jù)框,然后講解使用tidyr包實(shí)現(xiàn)常用的缺失數(shù)據(jù)的處理方法,如表1-4-4所示。

表1-4-4 缺失值的處理

(2)NULL

NULL就是沒有任何東西,表示數(shù)據(jù)的空白,而并非數(shù)據(jù)的缺失,也不能成為向量或者數(shù)據(jù)框的一部分。在函數(shù)中,參數(shù)有可能是NULL,返回的結(jié)果也可能是NULL。我們可以使用is.null()函數(shù)判定變量是否為NULL。

主站蜘蛛池模板: 遂平县| 句容市| 天全县| 洛隆县| 奉新县| 阳高县| 华蓥市| 铜鼓县| 神木县| 大新县| 耒阳市| 南部县| 墨玉县| 乐陵市| 普宁市| 青田县| 宝坻区| 永嘉县| 普兰县| 新巴尔虎左旗| 亚东县| 广河县| 花垣县| 莆田市| 浮山县| 上犹县| 徐汇区| 高雄县| 桦川县| 富锦市| 望城县| 观塘区| 德江县| 泸州市| 宜丰县| 砚山县| 大荔县| 育儿| 宝山区| 红原县| 高碑店市|