設定你的工作目錄

  1. 利用 getwd() 來找到目前的工作目錄位置

  2. 利用 setwd() 來設定你想要的工作目錄位置
> # 目前的工作目錄
> getwd()
[1] "/Users/chenyupei/Dropbox/DSP/2016資料科學夏令營/RBasic-gh-pages"
> # 設定新的工作目錄(For Mac)
> setwd("~/Dropbox/DSP/2016資料科學夏令營/RBasic-gh-pages/")
> # 設定新的工作目錄(For Windows)
> setwd("C:/Dropbox/DSP/2016資料科學夏令營/RBasic-gh-pages")

Open Data 讀檔三部曲

  1. 利用 readBin(con , what = "raw", n = 3) 檢查檔案有沒有 BOM
  2. 如果沒有 BOM ,利用 file() 搭配 readLines() 兩個函數來測試編碼   readLines(file("檔名.csv", encoding = "BIG5"), n = 3)

  3. 確認編碼後,使用 read.table()read.csv() 將檔案讀入吧!

教你讀取 csv 資料集

  • read.csv(file, header = FALSE, sep = ",",
    stringsAsFactors = default.stringsAsFactors(),
    fileEncoding = "", ...)
    • file:讀取檔案的路徑
    • header = FALSE:檔案是否有標題(預設為無)
    • sep = "":分隔符號(預設為逗號)
    • stringsAsFactors:字串變數是否要以 Factor 形式儲存
    • fileEncoding = “”:檔案編碼

實戰一下讀取 csv 資料集

  1. 讀入歷年護理人員資料.csv

> ## 讀入歷年護理人員資料.csv
> # 檢查編碼,查詢網站後發現沒有BOM
> readBin("歷年護理人員資料.csv", what = "raw", n = 3)
[1] 22 e6 80
> # 利用readLines()測試是否為BIG5,發現有錯!
> readLines(file("歷年護理人員資料.csv", encoding = "BIG5"), n = 3)
[1] "\""

> # 利用readLines()測試是否為UTF-8,發現正確!
> readLines(file("歷年護理人員資料.csv", encoding = "UTF-8"), n = 3)
[1] "\"性別\",\"醫療層級\",\"縣市\",\"年齡\",\"年度\",\"人數\""
[2] "\"F\",\"醫學中心\",\"高雄市\",20,2005,56"                 
[3] "\"F\",\"醫學中心\",\"高雄市\",20,2006,17"                 
> # 讀入檔案
> data1 <- read.csv("歷年護理人員資料.csv",
+                  header = T,
+                  sep = ",",
+                  fileEncoding = "UTF-8")

  1. 讀入ubike-hour-201502-utf8.csv

> ## 讀入ubike-hour-201502-utf8.csv
> # 檢查編碼,查詢網站後發現沒有BOM
> readBin("ubike-hour-201502-utf8.csv", what = "raw", n = 3)
[1] 64 61 74
> # 利用readLines()測試是否為BIG5,發現有錯!
> readLines(file("ubike-hour-201502-utf8.csv", encoding = "BIG5"), n = 3)
[1] "date,hour,sno,sarea,sna,lat,lng,tot,avg.sbi,max.sbi,min.sbi,std.sbi,avg.bemp,max.bemp,min.bemp,std.bemp,temp,humidity,pressure,max.anemo,rainfall"
[2] "2015-02-01,0,1,靽∠儔"                                                                                                                            

> # 利用readLines()測試是否UTF-8,發現正確!
> readLines(file("ubike-hour-201502-utf8.csv", encoding = "UTF-8"), n = 3)
[1] "date,hour,sno,sarea,sna,lat,lng,tot,avg.sbi,max.sbi,min.sbi,std.sbi,avg.bemp,max.bemp,min.bemp,std.bemp,temp,humidity,pressure,max.anemo,rainfall"                               
[2] "2015-02-01,0,1,信義區,捷運市政府站(3號出口),25.040858,121.567904,180,4.153,11,0,3.643,175.847,180,169,3.643,13.7375487748635,87.4970014318501,1025.79130605244,1.7773507151817,0"
[3] "2015-02-01,0,2,大安區,捷運國父紀念館站(2號出口),25.041,121.556945,48,1.322,5,0,1.383,46.678,48,43,1.383,13.8040099842336,86.8173159236481,1025.41134988485,0.851521511729567,0"  

> # 讀入檔案
> data2 <- read.csv("ubike-hour-201502-utf8.csv",
+                   header = T,
+                   sep = ",",
+                   fileEncoding = "UTF-8")

> # 看看護理人員資料前六筆
> head(data1)
  性別 醫療層級   縣市 年齡 年度 人數
1    F 醫學中心 高雄市   20 2005   56
2    F 醫學中心 高雄市   20 2006   17
3    F 醫學中心 高雄市   20 2007   11
4    F 醫學中心 高雄市   20 2008    1
5    F 醫學中心 高雄市   20 2009    5
6    F 醫學中心 高雄市   20 2010    5
> # 看看ubike資料前六筆
> head(data2)
        date hour sno  sarea                       sna   lat   lng tot
1 2015-02-01    0   1 信義區     捷運市政府站(3號出口) 25.04 121.6 180
2 2015-02-01    0   2 大安區 捷運國父紀念館站(2號出口) 25.04 121.6  48
3 2015-02-01    0   3 信義區                台北市政府 25.04 121.6  40
4 2015-02-01    0   5 信義區                  興雅國中 25.04 121.6  60
5 2015-02-01    0   7 信義區         信義廣場(台北101) 25.03 121.6  80
6 2015-02-01    0   8 信義區                  世貿三館 25.04 121.6  60
  avg.sbi max.sbi min.sbi std.sbi avg.bemp max.bemp min.bemp std.bemp
1   4.153      11       0   3.643   175.85      180      169    3.643
2   1.322       5       0   1.383    46.68       48       43    1.383
3   0.407       1       0   0.495    39.59       40       39    0.495
4   1.220       3       0   0.966    57.78       59       56    0.966
5   2.949       9       0   3.345    75.98       79       69    3.476
6   1.983       7       0   2.543    57.02       59       52    2.543
   temp humidity pressure max.anemo rainfall
1 13.74    87.50     1026    1.7774        0
2 13.80    86.82     1025    0.8515        0
3 13.83    87.25     1026    1.6134        0
4 13.83    87.57     1026    1.9129        0
5 13.92    87.49     1026    1.9093        0
6 13.89    87.22     1026    1.6236        0