1. 程式人生 > >R語言-文字檔案讀寫 txt / csv / xlsx

R語言-文字檔案讀寫 txt / csv / xlsx

read.table(file,sep,hesder)
#file 檔案路徑
#sep 分隔符
#header 第一行是不是列名(如果第一行是列名匯入的時候填TRUE;預設值是FALSE,即把第一行算作資料)

準備工作

為方便後面使用的相對路徑,我們先使用setwd(路徑)設定路徑,設定好之後可以用getwd() 獲取當前路徑進行檢查。

> setwd("F:/r-test-data")
> getwd()
[1] "F:/r-test-data"

注意資料分隔符:
因為資料有時候是從資料庫匯出或者.xlsx裡擷取等等,所以有時候看起來是空白分隔卻有著不一樣的格式。
常見空白分隔符有:空格,製表符,換行符
sep=” ”;sep = “\t”;sep = “\n”

讀取txt檔案

將工作路徑調製要匯入檔案所在的資料夾下,之後輸入.txt的檔名和分隔符就可以匯入資料了。

> data1 <- read.table('test.txt',sep = '\t',header = TRUE)
> data1
   CountryCode    Language IsOfficial Percentage
1          ABW       Dutch       TRUE        5.3
2          AFG        Dari       TRUE       32.1
3          AFG      Pashto       TRUE
52.4 4 AIA English TRUE 0.0 5 ALB Albaniana TRUE 97.9 6 AND Catalan TRUE 32.3 7 ANT Dutch TRUE 0.0 8 ANT Papiamento TRUE 86.2 9 ARE Arabic TRUE 42.0
10 ARG Spanish TRUE 96.8 11 ARM Armenian TRUE 93.4 12 ASM English TRUE 3.1 13 ASM Samoan TRUE 90.6 14 ATG English TRUE 0.0 15 AUS English TRUE 81.2 16 AUT German TRUE 92.0 17 AZE Azerbaijani TRUE 89.0

讀取CSV檔案

CSV (逗號分隔值檔案格式)
CSV”並不是一種單一的、定義明確的格式(儘管RFC 4180有一個被通常使用的定義)。因此在實踐中,術語“CSV”泛指具有以下特徵的任何檔案:
1. 純文字,使用某個字符集,比如ASCII、Unicode、EBCDIC或GB2312;
2. 由記錄組成(典型的是每行一條記錄);
3. 每條記錄被分隔符分隔為欄位(典型分隔符有逗號、分號或製表符;有時分隔符可以包括可選的空格);
4. 每條記錄都有同樣的欄位序列。
在資料

在R語言使用過程中最為常用的資料格式,有專門的讀取函式read.csv(file,header)(read.csv也可用於讀取逗號分隔的.txt檔案)。
讀取Excel檔案通常,先轉為CSV格式,然後再使用。

這裡的countrylanguage.csv檔案,是我直接從MySQL資料庫中匯出.csv格式的資料集合。

> data2 <- read.csv('countrylanguage.csv',TRUE)
> head(data2)
> #通過head()函式可以讀取前6行資料
  CountryCode Percentage Percentage.1 Percentage.2
1         ABW      Dutch         TRUE          5.3
2         ABW    English        FALSE          9.5
3         ABW Papiamento        FALSE         76.7
4         ABW    Spanish        FALSE          7.4
5         AFG    Balochi        FALSE          0.9
6         AFG       Dari         TRUE         32.1

讀取Excel檔案

一種需要配置java環境的讀檔案,如果大家電腦中沒有裝好的java環境,還是建議大家還是把.xlsx另存為.csv;如果本來就是JAVA語言使用者那就可以直接體驗,不必繁瑣的配環境了。

讀取Excel需要使用到xlsx包,xlsx依賴於rjava包,rjava雖然是R語言包 但是使用環境需要JAVA語言編譯環境JRE(JDK是JAVA的執行環境包括了JRE)。
安裝流程:安裝JDK->載入rJava->載入xlsx包

注意:R語言是一個大小寫敏感的語言,大家下載和載入包時要注意包名裡字母的大小寫例如:install.packages('rjava') 會提示包名應該為rJava。

配置好jdk環境,載入好rJava和xlsx包就可以開始讀取Excel檔案了。

> data4 <- read.xlsx('countrylanguage.xlsx',sheetIndex = 1)
> #讀取檔案
> data4
    CountryCode                Percentage Percentage.1 Percentage.2
1           ABW                     Dutch            T          5.3
2           AFG                      Dari            T         32.1
3           AFG                    Pashto            T         52.4
4           AIA                   English            T          0.0
5           ALB                 Albaniana            T         97.9
6           AND                   Catalan            T         32.3
7           ANT                     Dutch            T          0.0
8           ANT                Papiamento            T         86.2
9           ARE                    Arabic            T         42.0
10          ARG                   Spanish            T         96.8

寫入檔案

可以儲存成任意符號分隔的檔案write.table(data,file,sep)
儲存成檔案的型別要自己以副檔名的方式寫在‘file’欄位裡,比如test.csv,test.doc,test.xlsx

寫CSV檔案

write.csv(data,file)
#為了檢驗方便,這裡我們把countrylanguage前六行數另存為.csv檔案;當然檔案的副檔名是可以自己指定的,當然檔案裡資料都是逗號分割的。
> data3 <- head(data2)
> write.csv(data3,'save.csv')
> write.csv(data3,'save.doc')

存為CSV檔案

存成word版資料
可以設定不要行名將前面沒有意義的1,2…去掉write.csv(data3,'save.csv',row.names = FALSE) 得到結果

"CountryCode","Percentage","Percentage.1","Percentage.2"
"ABW","Dutch",TRUE,5.3
"ABW","English",FALSE,9.5
"ABW","Papiamento",FALSE,76.7
"ABW","Spanish",FALSE,7.4
"AFG","Balochi",FALSE,0.9
"AFG","Dari",TRUE,32.1

寫xlsx檔案

將要儲存的資料存成.xlsx檔案

> write.xlsx(head(data3),'test.xlsx',row.names = FALSE)
> #和之前寫檔案一樣,write.‘type’(),type只是資料儲存時格式的描述,不是預設儲存檔案的副檔名
> #副檔名需要自己在檔名中寫清楚,檔案儲存格式開啟方式是和副檔名有關的。

存xlsx檔案