内容提要
本课讲解整洁数据:每列一个变量、每行一个观测,便于向量化操作。以航班数据为例,用melt将矩阵转为长格式,dcast还原。data.table语法为DT[i,j,by],实现分组-聚合-合并,如按航空公司计算平均延误。用merge进行左、右、内、全连接,合并航班、天气、飞机等表。管道符可串联多步操作,使代码简洁高效。
延伸解读
为什么需要整洁数据
文章强调,将数据整理成每列一个变量、每行一个观测的格式,是为了便于向量化操作。在R中,向量化能避免显式循环,因为循环在R中很慢。整洁数据使得后续的分组、聚合和合并操作更高效,尤其适合处理高维大数据集。
data.table的性能优势
文章通过对比指出,当数据规模从500MB增至50GB时,许多常用包(如dplyr)会因内存不足或耗时过长而失效,而data.table仍能在13秒内完成操作。data.table用C实现,内存效率高,适合处理实验科学中指数增长的数据集。
因子类型节省内存
对于重复出现的分类变量(如染色体编号),R的因子类型只存储整数标识和标签查找表,避免重复存储长字符串。这在处理数百亿次测量时能大幅减少内存占用,是处理基因组等大数据的关键技巧。
管道操作与数据合并
文章提到用管道符串联多步操作,使代码简洁。同时,merge函数支持左、右、内、全连接,可将航班、天气、飞机等多表合并。这些工具共同构成了高效的数据处理流程,适合从多源数据中提取信息。
Q&A
什么是整洁数据?为什么需要它?
整洁数据是指每列代表一个变量,每行代表一个观测的数据格式。这种格式便于进行向量化操作,提高计算效率。
如何将宽格式数据转换为长格式?
可以使用melt函数将宽格式数据转换为长格式,例如在航班数据中,将矩阵转为长格式。
data.table的基本语法是什么?
data.table的基本语法是DT[i, j, by],其中i用于筛选行,j用于选择或计算列,by用于分组。
如何用data.table计算分组聚合?
可以使用DT[i, j, by]语法,例如按航空公司分组计算平均延误:DT[, mean(delay), by=airline]。
merge函数支持哪些类型的连接?
merge函数支持左连接、右连接、内连接和全连接,用于合并多个数据表,如航班、天气和飞机表。
管道符在数据处理中有什么作用?
管道符可以串联多步操作,使代码更简洁高效,例如将多个数据处理步骤连接起来。