R語言的數據輸入


既然了解了R語言的基本數據類型,那么如何將龐大的數據送入R語言進行處理呢?送入的數據又是如何在R語言中進行存儲的呢?處理這些數據的方法又有那些呢?下面我們一起來探討一下。

首先,數據輸入最直接最直觀的方法就是鍵盤輸入,在上面幾篇都已經講到,利用c創建向量,利用matrix創建矩陣,利用data.frame創建數據框等,但是我們處理的數據往往比較多,鍵盤輸入在面對如此龐大的數據時顯然不現實,當然你可以花費好幾天來輸入數據而且保證不出錯除外,而且待處理的一般都存儲在Excel,網頁,數據庫其他中介中,因此:如何大批量無差錯高效率地讀取數據就成為R語言首先要解決的問題。

第一:如果自己學習寫代碼,加載R語言中本身自帶的數據包cars等,加載的方法跟其他包相同,具體代碼如下:

> install.packages("car")
> library(cars)

第二:讀取外部數據一般用read.***( ),***代表要讀取的文件類型,下面詳細解釋了每種類型的文件的讀取:

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 = "", ...)

其中:

參數file:代表要讀去的文件名以及文件路徑,如果當前工作路徑就是需要讀取的文件的存儲路徑,那么可以直接寫文件名,記得要用雙引號括起來。那么如何設置工作路徑呢?首先我們查看當前的工作路徑用getwd( )函數,設置工作路徑的話用setwd(" 工作路徑")函數,注意,在設置工作路徑時,需要把路徑中所有的 "\" 改成 “\\”。具體操作如下代碼:

> getwd()    #查看當前工作路徑
[1] "E:/趙志博/R"
> setwd("E:\趙志博") #錯誤的設置方式
Error: '\? is an unrecognized escape in character string starting ""E:\?
> setwd("E:\\趙志博") #正確的設置方式
> getwd()    #查看設置后的工作路徑
[1] "E:/趙志博"

當工作路徑設置完成后,便可以直接讀取工作路徑里面的文件而不需要加文件的存儲位置。如代碼所示,當前工作路徑為"E:/趙志博",在該路徑下創建了文件“123.txt”,可以直接讀取文件,但是在“D:/”創建了新的文件“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

 每次都要設置路徑,對有些場合來說未免太過麻煩,因此R提供了一種可以直接選擇文件位置的函數,read.***(file.choose()),例如讀取txt數據:

mydatachoose <- read.table(file.choose()) #自由選取數據來讀取,但是file.choose( )的參數好像沒有

參數header:主要確定需要讀取的文件是否自己已經設置了列名,默認值為FALSE。這個需要解釋一下:上節我們已經講過data.frame類型,那么read.***( )的返回值也是數據框類型,自然是按列填充的數據框格式,因此列名就顯得尤為重要,相當於Excel的表頭部分,行號系統會根據1~N的順序排好,當然也可以修改。

參數sep:主要確定需要讀取的文件中,各個字符的分割方式,一般有空格分割,逗號分割等,確定了分割方式,才能保證將數據讀取為自己想要的樣子。

常見用的參數就是這些,其他的原理都差不多,如果有需要自行學習。

1.txt文件:mydata <- read.table( )

2.Excel格式數據:mydata <- read.xlsx( ),在使用這個函數之前,需要先安裝xlsx包,安裝方法跟其他包的安裝方法一致。一般來說,讀取xlsx文件速度較慢,通常將Excel文件保存為csv格式,然后再進行讀取 mydata <- read.csv( )

3.XML數據:讀取XML數據前先要載入XML包,然后使用 mydata <- xmlRoot(xmlTreeParse("***.xml"))來讀取

關於數據的讀取就先介紹到這里,其他有用的着的再單獨學習。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM