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

r-accessing-variables-and-managing-subsets-of-data-export-csv

Excel 讀取 CSV 檔

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

r-accessing-variables-and-managing-subsets-of-data-export-csv-adj

修正欄位名稱

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

R

2 留言

  1. 山崎退

    新手發問~~小弟沒有資訊背景,剛接觸R不久
    請問文章開頭的資料檔squid.txt是需自行建立嗎?
    或者是有載點可下載
    蠻希望跟著板主的文章來練習
    若有不妥還請包涵~~感謝!

    • G. T. Wang

      是我忘記放下載連結,真是抱歉!

      我已經將下載連結放在文章中了,如果還有其他問題請再跟我說,謝謝您。

Leave a Reply