R 所提供的 write.table
函數可以將 R 中的資料匯出至檔案,以 ASCII 的格式儲存,以利資料的交換或傳送。假設我們要將 Squid
的男性資料篩選出來,儲存成檔案,可以執行:
SquidM <- Squid[Squid$Sex == 1, ] write.table(SquidM, file = "MaleSquid.txt", sep = " ", quote = FALSE, append = FALSE, na = "NA")
write.table
的第一個參數是指定要匯出的資料變數,file
參數是檔案名稱,sep
是指定欄位分隔字元(這裡是使用空白),quote = FALSE
是設定不要加入引號,na
則是指定缺失值的表示方法。如果要匯出的檔案已經存在時,加入 append = FALSE
可以把就的檔案內容直接覆蓋掉,如果將 append
指定為 TRUE
,則會將資料附加在既有的檔案內容之後。
上面的指令執行之後,輸出的檔案內容為:
Sample Year Month Location Sex GSI 24 24 1 5 1 1 5.297 48 48 1 5 3 1 4.2968 58 58 1 6 1 1 3.5008 60 60 1 6 1 1 3.2487 61 61 1 6 1 1 3.2304 62 62 1 5 3 1 3.2263 63 63 1 6 1 1 3.1848 [略]
如果要讓資料可以直接給 Excel 讀取,可以使用逗號作為分隔字元來產生 CSV 檔:
write.table(SquidM, file = "MaleSquid.csv", sep = ",", quote = FALSE, append = FALSE, na = "NA")
quote
設定為 TRUE
可以讓欄位名稱與類別資料加上引號,有時候這樣可以避免特殊字元造成的解析錯誤。
write.table(SquidM, file = "MaleSquid.csv", sep = ",", quote = TRUE, append = FALSE, na = "NA")
加上 sep = ","
與 quote = TRUE
的檔案輸出內容會像這樣:
Sample","Year","Month","Location","Sex","GSI" "24",24,1,5,1,1,5.297 "48",48,1,5,3,1,4.2968 "58",58,1,6,1,1,3.5008 "60",60,1,6,1,1,3.2487 "61",61,1,6,1,1,3.2304 "62",62,1,5,3,1,3.2263 "63",63,1,6,1,1,3.1848 [略]
使用 write.table
所產生的 CSV 雖然可以用 Excel 直接開啟,不過在用 Excel 打開之後,第一列會少掉第一欄的名稱:
這裡我們需要自己手動將第一列的名稱往右移動一格,修正欄位名稱的對應,才會得到正確的表格。
Exercise 3
在 Exercise 2 中,我們已經將所有四月份且 SampleDepth
大於 2000
的資料篩選出來了,請繼續使用 write.table
函數,將這些檔案匯出至檔案中。