R語言高速unnest
作者:黃天元,復(fù)旦大學(xué)博士在讀,熱愛數(shù)據(jù)科學(xué)與開源工具(R),致力于利用數(shù)據(jù)科學(xué)迅速積累行業(yè)經(jīng)驗(yàn)優(yōu)勢和科學(xué)知識發(fā)現(xiàn),涉獵內(nèi)容包括但不限
作者:黃天元,復(fù)旦大學(xué)博士在讀,熱愛數(shù)據(jù)科學(xué)與開源工具(R),致力于利用數(shù)據(jù)科學(xué)迅速積累行業(yè)經(jīng)驗(yàn)優(yōu)勢和科學(xué)知識發(fā)現(xiàn),涉獵內(nèi)容包括但不限于信息計(jì)量、機(jī)器學(xué)習(xí)、數(shù)據(jù)可視化、應(yīng)用統(tǒng)計(jì)建模、知識圖譜等,著有《R語言數(shù)據(jù)高效處理指南》(《R語言數(shù)據(jù)高效處理指南》(黃天元)【摘要 書評 試讀】- 京東圖書,《R語言數(shù)據(jù)高效處理指南》(黃天元)【簡介_書評_在線閱讀】 - 當(dāng)當(dāng)圖書)。知乎專欄:R語言數(shù)據(jù)挖掘。郵箱:huang.tian-yuan@qq.com.歡迎合作交流。
熟悉tidyr::unnest函數(shù)的應(yīng)該知道,在使用column-list的時(shí)候,需要把其還原為本來的數(shù)據(jù)框就需要這個(gè)函數(shù)(這種操作想必在SQL里面也不曾存在,是高級操作)。我以前做的時(shí)候數(shù)據(jù)量比較少,因此沒有意識到海量數(shù)據(jù)的時(shí)候它可能會慢。但是一個(gè)帖子給了一些啟示,并編寫了一個(gè)函數(shù)來加速這個(gè)過程,因此這里援引一下:
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的時(shí)候,一定會回來取用。
上一篇:mvr三效蒸發(fā)器
下一篇:臨沂提升機(jī)鏈條型號









