星期五, 十一月 11, 2011

在R中使用DataMarket的公开数据源

在如今的商业世界中,各种数据和统计数字是非常重要的决策依据,但良好的数据通常很难获得。因为数据来源分散而且格式不一,世界各地的分析人员往往花费了无数的时间进行数据检索、复制、粘贴和清理。

DataMarket.com是2010年推出的一个数据门户网站,可以一站式访问各种公共和私营部门组织的统计数据和结构化数据。这使得用户非常方便的查找、比较、可视化和下载各类机构的公开数据,如联合国,世界银行,欧盟统计局。时间序列数据还可以与新闻事件相关联,并可以用任何选定的数据格式使用到任何地方。

我们在之前的博文中曾提到过DataMarket的数据源,本文简单介绍一下如何更方便的在R语言中调用DataMarket数据。


首先安装rdatamarket扩展包并加载
install.packages('rdatamarket')
library(rdatamarket)
然后在Datamarket网站中搜索你需要的数据,例如中国的CPI数据,将网址复制下来,再使用dmlist命令将其转化为dataframe格式,以方便进一步处理。
data=dmlist('http://datamarket.com/data/set/148w/inflation-consumer-prices-annual#display=line&ds=148w|ga2=v.39.4f')
head(data)
其结果如下所示:
Country Year     Value
1   China 1987  7.219986
2   China 1988 18.736427
3   China 1989 18.333044
4   China 1990  3.058311
5   China 1991  3.543575
6   China 1992  6.340345
数据中默认包含了香港和澳门地区,如果你想单独研究大陆地方也很容易
newdata=split(x=data,f=data$Country)
另一种命令dmseries则将原始数据转化为时间序列格式zoo,其使用方法也是类似的
timedata=dmseries('http://datamarket.com/data/set/148w/inflation-consumer-prices-annual#display=line&ds=148w|ga2=v.39.4f')
如果希望获取元数据信息则使用dminfo命令
info=dminfo('http://datamarket.com/data/set/148w/inflation-consumer-prices-annual#display=line&ds=148w|ga2=v.39.4f')
print(info)
从下面的结果可以看到此数据是由世界银行提供,引用的IMF数据
Title: "Inflation, consumer prices (annual %)"
Provider: "World Bank" (citing "International Monetary Fund, International Financial Statistics and data files.")
Dimensions:
  "Country" (180 values):
    "Afghanistan"
    "Albania"
    "Algeria"
    "Angola"
    "Antigua and Barbuda"
    [...]

没有评论:

发表评论