3

我正在尝试将以下 url 下载到 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...

4

2 回答 2

5

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

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

好吧,对话不说了。不用担心抓取 XL 格式的数据。您可以直接使用 R 解析数据。大多数网站使用一致的命名约定,因此使用for循环和为您的数据集构建 URL 将很容易。

下面是一个直接使用 R 将页面解析为 a 的示例,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。它真的在很多层面上拉平了我的学习曲线。

于 2013-10-26T00:58:45.070 回答
2

您可能只使用download.fileread.xls来自 gdata 库。我认为您不能跳过读取 .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")
于 2013-10-26T00:10:35.223 回答