从url下载xls文件到数据帧(Rcurl)?

时间:2013-10-25 23:28:11

标签: r xls rcurl geturl

我正在尝试将以下网址下载到R数据帧中:

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

(这是公共页面上的“导出”链接:http://www.fantasypros.com/nfl/rankings/qb.php/

但是,我不确定如何'解析'数据?我也希望自动执行此操作并每周执行一次,因此任何有关如何将其构建为每周访问工作流程的想法都将非常感谢!已经谷歌搜索和搜索stackoverflow几个小时现在无济于事......: - )

谢谢,

贾斯汀

尝试过的代码:

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...

2 个答案:

答案 0 :(得分:3)

欢迎来到R。听起来你喜欢在Excel中进行分析。这完全没问题,但事实上你要求从网上抓取数据并且询问R,我认为可以安全地假设你将开始寻找编程分析的方法。

那就是说,你真正想做的就是爬网。有很多关于如何使用R执行此操作的示例,就在SO上。寻找诸如“网页抓取”,“抓取”和“屏幕抓取”之类的内容。

好的,对话放在一边。不要担心以XL格式抓取数据。您可以直接使用R解析数据。大多数网站使用一致的命名约定,因此使用for循环并为数据集构建URL将非常简单。

以下是直接使用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。它在很多层面上让我的学习曲线变得平坦。

答案 1 :(得分: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")