0

我想在 R 中操作、存储和检索嵌套数据,但令我惊讶的是,嵌套数据框的大小大幅增加:

pacman::p_load(dplyr, tidytable)

test3 <- tibble(ID = 1:1e5) %>% 
  group_by(ID) %>% 
  summarise(number = 1:sample(1:4, size = 1), .groups = "drop") %>% 
  mutate(Date = sample(seq.Date(from = as.Date("2021-01-01"),
                                 to = as.Date("2021-12-31"), by = 1),
                        size = n(), replace = TRUE)) 

test4 <- test3 %>% nest_by(ID)

prettyNum(object.size(test3), big.mark = ",") 4 MB
prettyNum(object.size(test4), big.mark = ",") 132 MB

存在同样的问题tidytable

数据嵌套是一个很酷的想法,因为如果数据不是二维的,它有助于控制数据重复问题。

但是这种内存增加是有问题的。

此外,write_fst如果有嵌套列,则拒绝写入数据,所以我可能也需要一个不同的解决方案。

你有什么建议吗?

4

1 回答 1

1

简单的答案是不要嵌套您的数据。

一个数字数组可以有效地存储和检索,因为它们彼此靠近,但是嵌套数据分布在内存中,数据框需要每个观察的地址来访问它们并检索值。换句话说,数字数组是单个对象,嵌套值数组是一个集合(在您的情况下为 10^5)小对象。

于 2022-01-27T23:49:32.710 回答