R語言的數(shù)據(jù)輸入深入講解
既然了解了R語言的基本數(shù)據(jù)類型,那么如何將龐大的數(shù)據(jù)送入R語言進(jìn)行處理呢?送入的數(shù)據(jù)又是如何在R語言中進(jìn)行存儲的呢?處理這些數(shù)據(jù)的方法又有那些呢?下面我們一起來探討一下。
首先,數(shù)據(jù)輸入最直接最直觀的方法就是鍵盤輸入,在上面幾篇都已經(jīng)講到,利用c創(chuàng)建向量,利用matrix創(chuàng)建矩陣,利用data.frame創(chuàng)建數(shù)據(jù)框等,但是我們處理的數(shù)據(jù)往往比較多,鍵盤輸入在面對如此龐大的數(shù)據(jù)時顯然不現(xiàn)實(shí),當(dāng)然你可以花費(fèi)好幾天來輸入數(shù)據(jù)而且保證不出錯除外,而且待處理的一般都存儲在Excel,網(wǎng)頁,數(shù)據(jù)庫其他中介中,因此:如何大批量無差錯高效率地讀取數(shù)據(jù)就成為R語言首先要解決的問題。
第一:如果自己學(xué)習(xí)寫代碼,加載R語言中本身自帶的數(shù)據(jù)包c(diǎn)ars等,加載的方法跟其他包相同,具體代碼如下:
> install.packages("car") > library(cars)
第二:讀取外部數(shù)據(jù)一般用read.***( ),***代表要讀取的文件類型,下面詳細(xì)解釋了每種類型的文件的讀?。?/p>
read.table(file, header = FALSE, sep = "", quote = "\"'", dec = ".", numerals = c("allow.loss", "warn.loss", "no.loss"), row.names, col.names, as.is = !stringsAsFactors, na.strings = "NA", colClasses = NA, nrows = -1, skip = 0, check.names = TRUE, fill = !blank.lines.skip, strip.white = FALSE, blank.lines.skip = TRUE, comment.char = "#", allowEscapes = FALSE, flush = FALSE, stringsAsFactors = default.stringsAsFactors(), fileEncoding = "", encoding = "unknown", text, skipNul = FALSE) read.csv(file, header = TRUE, sep = ",", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...) read.csv2(file, header = TRUE, sep = ";", quote = "\"", dec = ",", fill = TRUE, comment.char = "", ...) read.delim(file, header = TRUE, sep = "\t", quote = "\"", dec = ".", fill = TRUE, comment.char = "", ...) read.delim2(file, header = TRUE, sep = "\t", quote = "\"", dec = ",", fill = TRUE, comment.char = "", ...)
其中:
參數(shù)file:代表要讀去的文件名以及文件路徑,如果當(dāng)前工作路徑就是需要讀取的文件的存儲路徑,那么可以直接寫文件名,記得要用雙引號括起來。那么如何設(shè)置工作路徑呢?首先我們查看當(dāng)前的工作路徑用getwd( )函數(shù),設(shè)置工作路徑的話用setwd(" 工作路徑")函數(shù),注意,在設(shè)置工作路徑時,需要把路徑中所有的 "\" 改成 “\\”。具體操作如下代碼:
> getwd() #查看當(dāng)前工作路徑 [1] "E:/趙志博/R" > setwd("E:\趙志博") #錯誤的設(shè)置方式 Error: '\? is an unrecognized escape in character string starting ""E:\? > setwd("E:\\趙志博") #正確的設(shè)置方式 > getwd() #查看設(shè)置后的工作路徑 [1] "E:/趙志博"
當(dāng)工作路徑設(shè)置完成后,便可以直接讀取工作路徑里面的文件而不需要加文件的存儲位置。如代碼所示,當(dāng)前工作路徑為"E:/趙志博",在該路徑下創(chuàng)建了文件“123.txt”,可以直接讀取文件,但是在“D:/”創(chuàng)建了新的文件“456.txt”,便不能直接讀取,需要加上完整的文件路徑,路徑同樣需要將"\" 改成 “\\”。
mydata <- read.table("123.txt",sep = ',') > mydata V1 V2 V3 1 1 2 3 2 4 5 6 3 7 8 9 > mydataD <- read.table("456.txt",sep = ',') Error in file(file, "rt") : cannot open the connection In addition: Warning message: In file(file, "rt") : cannot open file '456.txt': No such file or directory > mydataD <- read.table("D:\\456.txt",sep = ',') > mydataD V1 V2 V3 1 1 2 3 2 4 5 6 3 7 8 9
每次都要設(shè)置路徑,對有些場合來說未免太過麻煩,因此R提供了一種可以直接選擇文件位置的函數(shù),read.***(file.choose()),例如讀取txt數(shù)據(jù):
mydatachoose <- read.table(file.choose()) #自由選取數(shù)據(jù)來讀取,但是file.choose( )的參數(shù)好像沒有
參數(shù)header:主要確定需要讀取的文件是否自己已經(jīng)設(shè)置了列名,默認(rèn)值為FALSE。這個需要解釋一下:上節(jié)我們已經(jīng)講過data.frame類型,那么read.***( )的返回值也是數(shù)據(jù)框類型,自然是按列填充的數(shù)據(jù)框格式,因此列名就顯得尤為重要,相當(dāng)于Excel的表頭部分,行號系統(tǒng)會根據(jù)1~N的順序排好,當(dāng)然也可以修改。
參數(shù)sep:主要確定需要讀取的文件中,各個字符的分割方式,一般有空格分割,逗號分割等,確定了分割方式,才能保證將數(shù)據(jù)讀取為自己想要的樣子。
常見用的參數(shù)就是這些,其他的原理都差不多,如果有需要自行學(xué)習(xí)。
1.txt文件:mydata <- read.table( )
2.Excel格式數(shù)據(jù):mydata <- read.xlsx( ),在使用這個函數(shù)之前,需要先安裝xlsx包,安裝方法跟其他包的安裝方法一致。一般來說,讀取xlsx文件速度較慢,通常將Excel文件保存為csv格式,然后再進(jìn)行讀取 mydata <- read.csv( )
3.XML數(shù)據(jù):讀取XML數(shù)據(jù)前先要載入XML包,然后使用 mydata <- xmlRoot(xmlTreeParse("***.xml"))來讀取
關(guān)于數(shù)據(jù)的讀取就先介紹到這里,其他有用的著的再單獨(dú)學(xué)習(xí)。
到此這篇關(guān)于R語言的數(shù)據(jù)輸入深入講解的文章就介紹到這了,更多相關(guān)R語言的數(shù)據(jù)輸入內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
R語言繪圖數(shù)據(jù)可視化pie?chart餅圖
這篇文章主要介紹了R語言繪圖數(shù)據(jù)可視化pie?chart餅圖,教大家如何用R語言來畫大餅,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步2022-02-02R語言通過parallel包實(shí)現(xiàn)多線程運(yùn)行方式
這篇文章主要介紹了R語言通過parallel包實(shí)現(xiàn)多線程運(yùn)行方式,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2021-04-04