3 数据获取
数据获取包含两层意思,其一是数据收集,其二是数据搜集。数据收集,往往意味着自己做实验设计,执行实验,回收数据,掌握第一手资料。而数据搜集,往往意味着自己从各个地方搜罗数据,再清洗整理校验,得到可靠的二手或三手数据。从前,统计学家下到试验田,在不同NPK(氮肥、磷肥和钾肥)配比的情况下,收集小麦的产量数据,以确定最佳配比。如今,许多互联网公司都有自己的 App,通过 App 收集大量用户及其行为数据,再以一定的数据模型加工整理成可用的二维表格。此外,许多政府和非政府的组织机构网站也发布大量的数据,比如各个国家的国家统计局和地方统计局,世界银行,国际货币基金组织等。这其中,有的以图片形式发布,有的以二维表格形式发布,有的以数据 API 服务形式发布,比起散落在各个公告中要好多了。
数据收集的方式有线下发放问卷、从网络爬取、网络调查问卷、线下市场调查、走访、有奖征集、埋点等。在真实的数据分析中,有时候需要借助 SQL 或浏览器开发者工具,从不同的数据源获取数据,清洗整理,再将数据导入 R 环境。
3.1 从本地文件读取
利用 Base R 提供的基础函数从各类文件导入数据
3.1.1 csv 文件
小的 csv 文件,可用 Base R 提供的 read.csv()
函数读取。 大型 csv 文件,可用 data.table 的 fread()
函数读取。
3.1.2 xlsx 文件
readxl 读 xls 和 xlsx 文件,writexl 写 xlsx。
openxlsx 读/写 xlsx 文件
3.1.3 arrow 文件
Apache Arrow 的 R 语言接口 arrow 超出内存的大规模数据操作。比如在时空数据处理场景,数据文件往往比较大,需要在远程服务器上处理超出本地计算机内存的数据,geoarrow包和sfarrow包都是应对此类需求。
3.2 从数据库中导入
从各类数据库导入数据,比如 RSQLite 等
3.2.1 RSQLite
3.2.2 odbc
3.2.3 RJDBC
很多数据库都有 Java 接口驱动
3.3 从各类网页中抓取
rvest 包从网页、网站抓取数据, 再用 xml2 和 httr2 解析处理网页数据。
3.3.1 豆瓣排行榜
3.3.2 链家二手房
3.4 从数据接口中获取
3.4.1 中国地震台网
中国地震台网 可以想象后台有一个数据库,在页面的小窗口中输入查询条件,转化为某种 SQL 语句,传递给数据库管理系统,执行查询语句,返回查询结果,即数据。
3.4.2 美国地质调查局
美国地质调查局提供一些选项窗口,可供选择数据范围,直接下载 CSV 或 XLS 文件。
3.4.3 美国人口调查局
tidycensus 需要注册账号,获取使用 API 接口的访问令牌,可以想象后台不仅有一个数据库,在此之上,还有一层数据鉴权。
3.4.4 世界银行
wbstats 包封装世界银行提供的数据接口 REST API