r - 将大量 html 表读入 R
问题描述
我正在尝试将 html 数据表拉入单个数据框中,并且正在寻找一个优雅的解决方案。有 255 个表,并且 url 因两个变量而异:Year 和 Aldermanic District。我知道必须有一种方法可以使用 for 循环或其他东西,但我很难过。
我已经通过使用单独的代码行读取每个表来成功导入数据,但这会导致每个表都有一行,并且再次有 255 个表。
library(XML)
data <- bind_rows(readHTMLTable("http://assessments.milwaukee.gov/SalesData/2018_RVS_Dist14.htm", skip.rows=1),
readHTMLTable("http://assessments.milwaukee.gov/SalesData/2017_RVS_Dist14.htm", skip.rows=1),
readHTMLTable("http://assessments.milwaukee.gov/SalesData/2016_RVS_Dist14.htm", skip.rows=1),
readHTMLTable("http://assessments.milwaukee.gov/SalesData/2015_RVS_Dist14.htm", skip.rows=1),
理想情况下,我可以使用for
循环或其他东西,这样我就不必readHTMLTable
为每个表手动编写函数代码。
解决方案
您可以尝试创建一个包含所有要抓取的 URL 的向量,然后使用循环遍历这些输入for
:
url1 <- "http://assessments.milwaukee.gov/SalesData/"
url2 <- "_RVS_Dist"
years <- c(2015:2018)
dist <- c(1:15)
urls <- apply(expand.grid(paste0(url1, years), paste0(url2, dist)), 1, paste, collapse="")
data <- NULL
for (url in urls) {
df <- readHTMLTable(url)
data <- rbind(data, df)
}
推荐阅读
- php - Symfony 4 守卫不验证用户
- javascript - 我如何用js为列表项倒计时?
- ruby-on-rails - “存档”是 Rails 或 SQLite3 中的保留字吗?
- javascript - 如何'将一个对象解析并转换为另一个具有不同“键/值”结构的对象'
- excel - 将单元格中的汉字和字母写入 .CSV
- telegram-bot - 如何通过 Telegram Bot 发送文件
- angular - 单击子组件上的任何按钮时可以在角度调用父组件功能吗?
- javascript - 针对特定更改重新加载整个反应应用程序
- c# - 如何为每个带有 ID 的数据库项目创建一个详细信息页面?
- linux - 没有使目标“distclean”的规则。编译 openresty 时停止