2017-07-27 34 views

回答

1

假設你知道每個數據集的網址類似的問題可以在這裏找到:

Download a file from HTTPS using download.file()

爲此,它變成了:

library(RCurl) 

URL <- "http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr71a-eng.htm&lan=eng" 
x <- getURL(URL) 
URLout <- read.csv(textConnection(x),row.names=NULL) 

我通過右鍵獲得的URL點擊訪問按鈕並複製地址。

我不得不宣佈row.names=NULL爲列的第一行中的數量不等於列數其他地方,從而read.csv假定行名as described here。我不確定這些數據集的URL在更新時是否會發生變化,但這不是獲取此數據的真正方便的方法。對於直觀地能夠更改數據集,JSON似乎不太好。

至少這樣你可以創建一個網址列表,並執行以下操作:

URL <- list(getURL("http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr71a-eng.htm&lan=eng"), 
      getURL("http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr72-eng.htm&lan=eng")) 

URLout <- lapply(URL,function(x) read.csv(textConnection(x),row.names=NULL,skip=2)) 

再次我不喜歡有申報row.names=NULL,當我看一下這個文件我沒有看到的但是這至少會使文件進入R環境。對多個URL執行操作可能需要更多的工作。

在進一步的努力以獲得有用colnames

URL <- "http://www.statcan.gc.ca/cgi-bin/sum-som/fl/cstsaveascsv.cgi?filename=labr71a-eng.htm&lan=eng" 
x <- getURL(URL) 
URLout <- read.csv(textConnection(x),row.names=NULL, skip=2) 

的arguement skip = 2在CSV讀取時將跳過該第一2行,並且將產生一些標題名稱。由於標題是數字,因此X將放在前面。在這種情況下,第2行在第二列中將具有值「數字」。不幸的是,這些數據似乎是用於excel的,這真的很讓人傷心。

+0

它確實導入了表格,但看起來好像沒有簡單的方法可以通過選擇表格名稱來導入數據,因爲它不在URL中。謝謝! – Duke

+0

是的,我也希望得到那種痛苦。此外,他們的CSV名稱非常差。現在我會好奇他們是否有某種命名約定文檔,可能會幫助你理清哪裏生活在哪裏。我也檢查了元數據文件。沒有真正產生很多信息。 – Badger

0

1)您需要將CSV下載到您有權訪問的某個目錄中。

2)使用 「read.csv」,或 「read_csv」,或 「FREAD」 來讀取CSV文件導入R.

yourTableName<-read.csv("C:/..../canadaDataset.csv") 

3)您可以名CSV到任何你想要的對象名。

+0

是的,但那意味着我必須單獨下載表格。我正在尋找一種方法來創建我想要的表的列表,然後執行該腳本,以便我可以直接從該站點一次拉出所有表。另外,如果數據發生變化,我將不得不重新拉動所有表格......這將不方便 – Duke

+0

由於這是一個web表單(?cgi),我不完全確定如何一次拉出所有表格來自網站。如果該文件位於「statcan.gc.ca/dataset.csv」網站上,那麼這是一個完全不同的故事...... – skhan8