尽管我们能够读取html表格、csv文件、json和xml数据,甚至某些html的原始文档,然后实现数据的存储,但花太多时间用来开发我们自己的工具意义并不大,除非我们再没有其他选择。因此,通常我们应该首先快速了解清楚web technologies以及services cran task view的内容,同时留意r-bloggers,stackoverf?low以及github这些网站,从上面获得任何可能的解决方案,而不是去定制自己的xpath工具和json列表。
我们现在来展示使用socrata公司为消费者金融保护局(the consumer financial protection bureau)提供的开放数据应用程序接口(the open dataapplication program interface),重新实现上述样例:

事实上,rsocrata包和我们前面的方法一样使用了json源(或csv文件)。请注意警告信息,其显示rsocrata包依赖于另外一个r中的json编译包,而不是我们之前使用的那个包,因此某些函数的名称是有冲突的。这时候,最好就是在自动导入rjsonio包之前先执行detach('package:rjson')操作。
有了rjsonio包,从指定的url装载顾客反馈意见数据库就变成了一件非常容易的事情:
我们可以获取数值型数据,所有的日期也被自动处理成posixlt!
类似的,web technologies和services cran task view包含了数百种和自然科学类web站点进行交互的r包,例如,生态学、遗传学、化学、天气学、金融学、经济学以及市场学等。我们还可以找到用于处理文本数据、文献资源、web分析数据、新闻以及地图和社会媒体数据类的r包。由于篇幅有限,我们将仅关注那些频繁使用的包。
yahoo!财经和google财经是企业界人士常用的两种开放式数据源标准。使用quantmod包以及前述一些服务提供商,可以非常容易地实现获取诸如股票、金属或者是外币交易价格这样的信息。例如,让我们来看一下以'a'为标记的agilenttechnologies公司最近的股票价格:
默认情况下,getsymbols函数会将获得的结果放在指定的parent.frame(通常为全局变量)环境内。如果指定null为期望中的环境,则处理结果会被当做一个xts的时间序列对象对待,如样例所示。
而外币交易的比率也可以很容易地抓取出来:
getsymbols函数返回的字符串为.globalenv内存放数据的r变量。如果要查看所有可用的数据源,可以使用相关的s3方法查询:
除了一些离线数据源,我们可以从google、yahoo!和oanda上获得最近的金融信息。如果要查看所有标记的完整列表,可以使用已经装载好的ttr包:
如果没有合法的授权令牌,那么在使用这类api时会存在很多限制,可以通过访问quandl主页来解决这一问题。当获得授权令牌后,可以用来设置quandl.auth函数的参数。
quandl包的功能包括:
以时间为筛选条件过滤数据
在服务器端执行一些对数据的转换操作,例如累积求和以及一阶微分等
对数据排序
确定返回对象的期望类别——例如ts、zoo和xts
下载有关数据源的一些元数据信息
元数据将存放在返回的r对象的attributes属性中,例如,希望统计数据集值的频数信息,可以调用:
不幸的是,该包的功能有些过时,也使用了一些遭弃用的api函数,因此我们最好找到一些新一点的替换函数,例如googlesheets包,它也支持对谷歌电子表格(不支持其他格式文档)的管理。
我们还可以从r中找到类似能够支持与google analytics和google adwords进行交互的包,来处理一些分析页面访问量或广告投入效率的问题。
google内部的数据调用gtrendsr包访问非常简单,不过在cran上还不提供下载,不过我们至少也可以以此为例来尝试一下如果通过其他的数据源来安装r的包。gtrendr源码库可以在bitbucket上获取,用devtools包来安装这些源码库非常方便。
可见从bitbucket或github安装r包和确定好源码库的名称以及作者姓名,再使用devtools完成下载和编译一样简单。
安装好以后,可以以常规方式载入包:
首先要通过一个合法的google用户名和口令完成授权,然后再开始对google trends数据库进行查询操作。现在搜索命令将是“how to install r”:
返回的数据集包括了以星期为周期的对r安装操作方法的查询频度。通过数据可知,7月中旬访问量最高,而接下来直到8月初的访问量仅为之前的75%。由此可见,google并不发布对原始查询数据的统计信息,更多的是一种对不同搜索主题及时间间隔活动的比较研究。
请注意其中不重要的结果都被省略了,获取数据的过程非常直接:通过r的包获取指定url的数据,这些数据以csv文件格式存放,然后对数据进行分析处理。如果将opt_detailed设置为true,将返回每天以30分钟为间隔的温度变化。
本章篇幅有限,因此不可能讨论完所有类型的在线数据源的处理方法,请参考web technologies、services cran task view、r-bloggers、stackoverf?low以及本书附录部分来了解这些实现了的r包,在读者开始开发自己的数据抓取包时也可以多参考helper函数。