问题描述
我有一个大约有 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 (将#修改为@)