2  数据获取

数据获取包含两层意思,其一是数据收集,其二是数据搜集。数据收集,往往意味着自己做实验设计,执行实验,回收数据,掌握第一手资料。而数据搜集,往往意味着自己从各个地方搜罗数据,再清洗整理校验,得到可靠的二手或三手数据。从前,统计学家下到试验田,在不同NPK(氮肥、磷肥和钾肥)配比的情况下,收集小麦的产量数据,以确定最佳配比。如今,许多互联网公司都有自己的 App,通过 App 收集大量用户及其行为数据,再以一定的数据模型加工整理成可用的二维表格。此外,许多政府和非政府的组织机构网站也发布大量的数据,比如各个国家的国家统计局和地方统计局,世界银行,国际货币基金组织等。这其中,有的以图片形式发布,有的以二维表格形式发布,有的以数据 API 服务形式发布,比起散落在各个公告中要好多了。

数据收集的方式有线下发放问卷、从网络爬取、网络调查问卷、线下市场调查、走访、有奖征集、埋点等。在真实的数据分析中,有时候需要借助 SQL 或浏览器开发者工具,从不同的数据源获取数据,清洗整理,再将数据导入 R 环境。

2.1 从本地文件读取

利用 Base R 提供的基础函数从各类文件导入数据

2.1.1 csv 文件

小的 csv 文件,可用 Base R 提供的 read.csv() 函数读取。 大型 csv 文件,可用 data.tablefread() 函数读取。

2.1.2 xlsx 文件

readxl 读 xls 和 xlsx 文件,writexl 写 xlsx。

openxlsx 读/写 xlsx 文件

2.1.3 arrow 文件

Apache Arrow 的 R 语言接口 arrow 超出内存的大规模数据操作。比如在时空数据处理场景,数据文件往往比较大,需要在远程服务器上处理超出本地计算机内存的数据,geoarrow包和sfarrow包都是应对此类需求。

2.2 从数据库中导入

从各类数据库导入数据,比如 RSQLite 等

2.2.1 RSQLite

2.2.2 odbc

2.2.3 RJDBC

很多数据库都有 Java 接口驱动

2.3 从各类网页中抓取

rvest 包从网页、网站抓取数据, 再用 xml2 和 httr2 解析处理网页数据。

2.3.1 豆瓣排行榜

2.3.2 链家二手房

2.4 从数据接口中获取

2.4.1 中国地震台网

中国地震台网 可以想象后台有一个数据库,在页面的小窗口中输入查询条件,转化为某种 SQL 语句,传递给数据库管理系统,执行查询语句,返回查询结果,即数据。

2.4.2 美国地质调查局

美国地质调查局提供一些选项窗口,可供选择数据范围,直接下载 CSV 或 XLS 文件。

2.4.3 美国人口调查局

美国人口调查局

tidycensus 需要注册账号,获取使用 API 接口的访问令牌,可以想象后台不仅有一个数据库,在此之上,还有一层数据鉴权。

2.4.4 世界银行

世界银行国际货币基金组织

wbstats 包封装世界银行提供的数据接口 REST API