R语言高速unnest
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限
作者:黄天元,复旦大学博士在读,热爱数据科学与开源工具(R),致力于利用数据科学迅速积累行业经验优势和科学知识发现,涉猎内容包括但不限于信息计量、机器学习、数据可视化、应用统计建模、知识图谱等,著有《R语言数据高效处理指南》(《R语言数据高效处理指南》(黄天元)【摘要 书评 试读】- 京东图书,《R语言数据高效处理指南》(黄天元)【简介_书评_在线阅读】 - 当当图书)。知乎专栏:R语言数据挖掘。邮箱:huang.tian-yuan@qq.com.欢迎合作交流。
熟悉tidyr::unnest函数的应该知道,在使用column-list的时候,需要把其还原为本来的数据框就需要这个函数(这种操作想必在SQL里面也不曾存在,是高级操作)。我以前做的时候数据量比较少,因此没有意识到海量数据的时候它可能会慢。但是一个帖子给了一些启示,并编写了一个函数来加速这个过程,因此这里援引一下:
library(pacman)np_load(rlang,data.table,tidyverse)nunnest_dt <- function(tbl, col) {nn tbl <- as.data.table(tbl)nn col <- ensyms(col)nn clnms <- syms(setdiff(colnames(tbl), as.character(col)))nn tbl <- as.data.table(tbl)nn tbl <- eval(n expr(tbl[, as.character(unlist(!!!col)), by = list(!!!clnms)])n )nn colnames(tbl) <- c(as.character(clnms), as.character(col))nn tbln}
原链接为:
https://www.johannesbgruber.eu/post/a-faster-unnest/以后需要高速unnest的时候,一定会回来取用。