2013-10-25 32 views
3

我試圖下載以下網址到一個R數據框:從url下載xls文件到數據框(Rcurl)?

http://www.fantasypros.com/nfl/rankings/qb.php/?export=xls

(這是公共頁面上的「導出」鏈接:http://www.fantasypros.com/nfl/rankings/qb.php/

但是,我不知道如何「解析」數據?我也希望自動執行此操作並每週執行一次,因此有關如何將此操作構建到每週訪問工作流程的任何想法都將不勝感激!一直谷歌搜索和現在幾個小時淘計算器無濟於事... :-)

謝謝

賈斯汀

嘗試代碼:

getURL("http://www.fantasypros.com/nfl/rankings/qb.php?export=xls")

這只是給我一個像這樣開始的字符串:

[1] "FantasyPros.com \t \nWeek 8 - QB Rankings \t \nExpert Consensus Rankings (ECR) \t \n\n Rank \t Player Name \tTeam \t Matchup \tBest Rank \t Worst Rank \t Ave Rank \t Std Dev \t\n1\tPeyton Manning\tDEN\t vs. WAS\t1\t5\t1.2105263157895\t0.58877509625419\t\t\n2\tDrew Brees\tNO\t vs. BUF\t1\t7\t2.6287878787879\t1.0899353819483\t\t\n3\tA...

+0

*我也忘了補充一點,我還需要考慮排除xls文件的前4行(第5行=列標題) – hianalytics

回答

3

歡迎來到R。這聽起來像你喜歡在Excel中進行分析。這完全沒問題,但事實上,您要求從網絡抓取數據並詢問有關R,我認爲可以安全地假設您將開始編寫分析程序是一條可行的路線。

也就是說,你真正想要做的就是抓取網頁。有很多關於如何用R來做到這一點的例子,就在這裏。尋找諸如「網頁抓取」,「爬行」和「屏幕抓取」之類的內容。

好吧,對話放在一邊。不要擔心以XL格式抓取數據。您可以直接使用R解析數據。大多數網站使用一致的命名約定,因此使用for循環併爲數據集構建網址將很容易。

下面是直接使用R解析頁面到data.frame的示例,該示例與XL中的表格數據非常相似。

## load the packages you will need 
# install.packages("XML") 
library(XML) 

## Define the URL -- you could dynamically build this 
URL = "http://www.fantasypros.com/nfl/rankings/qb.php" 

## Read the tables form the page into R 
tables = readHTMLTable(URL) 

## how many do we have 
length(tables) 

## look at the first one 
tables[1] 
## thats not it 

## lets look at the 2nd table 
tables[2] 

## bring it into a dataframe 
df = as.data.frame(tables[2]) 

如果使用R首次,你可以很容易地用命令install.packages("PackageNameHere")安裝外部包。但是,如果你對學習R很認真,我會考慮使用RStudio IDE。它使我在很多層面上的學習曲線變得平坦。

+0

+1,因爲無需下載文件並使用'readHTMLTable'! – tcash21

2

您可以使用gdata庫中的download.fileread.xls。我不認爲你可以跳過以.xls文件讀取的行,但你可以提供一個pattern參數,這樣它就可以讀取文件,直到在你的數據行中看到該模式。

library(gdata) 
download.file("http://www.fantasypros.com/nfl/rankings/qb.php?export=xls", destfile="file.xls") 

ffdata<- read.xls("file.xls", header=TRUE, pattern="Rank")