在 R 中有效地取消嵌套大型数据表

问题描述

我有一个大约有 350 万行和 44 列的大型数据框。一些列是字符类,其他列是列表。列表列中的元素并不总是共享相等的长度。下面是一个有代表性的例子。

名称 id 分数 爱好
A A102 22 c(sports,music)
B B098 c(20,71,2) c(运动、舞蹈、音乐)
C B876 c(66,76) c(running,dancing)

我想将此表解嵌套到下表中:

名称 id 分数 爱好
A A102 22 体育
A A102 22 音乐
B B098 20 体育
B B098 71 跳舞
B B098 2 音乐
C B876 66 运行
C B876 76 跳舞

我已经尝试过 tidyr:unnest 但它需要很长时间才能执行。我还尝试了 tidyfast 包中的 dt_hoist,但它要求要取消嵌套的列在取消嵌套时必须全部具有相同的长度,因此它不适用于我的数据集。此外,我尝试了 R 博主上发布的数据表解决方案(见下文)。但是,它要求每个列表列单独取消嵌套,而且它不保留数据表中的其他列表列。

dt[,list(scores = as.character(unlist(scores))),by = list(name,id)]

这里有人知道如何有效地解除嵌套吗?任何帮助将不胜感激。提前致谢。

解决方法

暂无找到可以解决该程序问题的有效方法,小编努力寻找整理中!

如果你已经找到好的解决方法,欢迎将解决方案带上本链接一起发送给小编。

小编邮箱:dio#foxmail.com (将#修改为@)