我正在尝试使用美国劳工统计局的所有美国县失业数据创建一个data.frame:
http://www.bls.gov/lau/#cntyaa
从1990年到2013年,这些数据每年有一个结果.
我原本计划使用BLS API,但看起来他们认为每个县都是一个单独的查询,查询总数将超过其阈值.我现在认为简单地从他们放在网上的TXT文件中抓取数据可能更容易,但我在使用R解析数据时遇到问题.这是一个包含数据的示例页面:
http://www.bls.gov/lau/laucnty90.txt#90 = 1990
我最初尝试使用rvest包解析文件.但由于数据都在一个<p>标签中,我认为该工具的表格没有足够的HTML结构.
然后,我尝试download.file和read.table.但同样,这些工具的数据似乎不是正确的格式 - 顶部和底部的额外行,而"分隔字符"只是一个空格,当县名包含空格时会混淆R.
在一天结束时,我只需要一个data.frame,其中包含来自此文件的3个数据:状态FIPS代码,县FIPS代码和失业率.
我现在认为创建此data.frame的最简单方法可能是下载excel文件,删除我不需要的列,删除顶部和底部的额外文本,导出为CSV,然后读取它到R.
我可以在14年中的每一年都这样做.但是我失去了一些可重复性 - 其他人将无法轻易验证我在导入过程中没有犯错误.
有没有人看到更简单的方法来创建这个data.frame?
那只是一个固定宽度的数据文件.我没有时间给你完美的代码,但调整这个应该给你你需要的东西:
url = 'http://www.bls.gov/lau/laucnty90.txt'
w = c(17, 8, 6, 50, 12, 13, 12, 11)
dat = read.fwf(url, w, skip=3)
Run Code Online (Sandbox Code Playgroud)