分類: R

R 變數與資料的管理

R 匯出資料

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 打開之後,第一列會少掉第一欄的名稱:

Excel 讀取 CSV 檔

這裡我們需要自己手動將第一列的名稱往右移動一格,修正欄位名稱的對應,才會得到正確的表格。

修正欄位名稱

Exercise 3
在 Exercise 2 中,我們已經將所有四月份且 SampleDepth 大於 2000 的資料篩選出來了,請繼續使用 write.table 函數,將這些檔案匯出至檔案中。

Page: 1 2 3 4 5 6 7 8 9

G. T. Wang

個人使用 Linux 經驗長達十餘年,樂於分享各種自由軟體技術與實作文章。

Share
Published by
G. T. Wang

Recent Posts

[開箱] 風能動力車玩具

本篇是風能動力車玩具的簡單開箱...

4 年 ago

[開箱] 七合一無重力磁浮組合科學實驗玩具

本篇是七合一無重力磁浮組合科學...

4 年 ago

[開箱] 兒童入門顯微鏡玩具,學生用 1200 倍複式顯微鏡

本篇是兒童入門顯微鏡玩具,加上...

4 年 ago

用飼料飼養小麻雀記錄

本篇記錄我在家門口撿到剛出生的...

4 年 ago

焗烤壽司:烤箱加熱冷藏壽司

這裡介紹如何用烤箱加熱冷藏過的...

4 年 ago