【发布时间】:2025-12-21 17:10:11
【问题描述】:
我正在处理由 528 列和 2,643,246 行组成的数据框。其中八个是字符变量,其余是整数。这总共增加了 11.35 GiB 的数据,我的可用 RAM 为 164 GiB。
我现在想在所述数据框上运行pivot_longer,每列有一行 + 两个 ID 变量(年份和机构)。 76年来共有机构671,370个。
所以 atm 数据的结构是这样的:
| Institution | Year | X | Y | Z |
|---|---|---|---|---|
| A | 1 | 2 | 1 | 3 |
| A | 2 | 3 | 4 | 4 |
| B | 1 | 3 | 4 | 2 |
| B | 2 | 5 | 3 | 2 |
我想在哪里改变它,使结构变成:
| Institution | Year | G | N |
|---|---|---|---|
| A | 1 | X | 2 |
| A | 1 | Y | 1 |
| A | 1 | Z | 3 |
| A | 2 | X | 3 |
| A | 2 | Y | 1 |
| A | 2 | Z | 4 |
| B | 1 | X | 3 |
| B | 1 | Y | 4 |
| B | 1 | Z | 2 |
| B | 2 | X | 5 |
| B | 2 | Y | 3 |
| B | 2 | Z | 2 |
为了实现这一点,我尝试了以下代码:
library(tidyverse)
Df <- Df %>% pivot_longer(17:527,
names_to = "G",
values_to = "N"
)
在小样本数据上运行此程序时,我设法达到了预期的结果,但是当尝试对整个数据集执行相同操作时,我很快耗尽了内存。从使用 11 GiB 内存的对象开始,它迅速增加到 150 GiB 以上,然后返回“无法分配大小为 x Gb 的向量”错误。
由于我没有添加任何数据,我不太明白额外的内存使用量是从哪里来的。因此,我想知道是什么造成了这种增加,以及是否有更有效的方法可以通过其他一些代码来解决这个问题。 提前感谢您的帮助!
【问题讨论】: