gpt4 book ai didi

performance - 加速将人 reshape 为 R 中的周期格式数据帧

转载 作者:行者123 更新时间:2023-12-01 01:24:11 24 4
gpt4 key购买 nike

我有一个面向个人格式的纵向数据数据集,如下所示:

pid varA_1 varB_1 varA_2 varB_2 varA_3 varB_3 ...
1 1 1 0 3 2 1
2 0 1 0 2 2 1
...
50k 1 0 1 3 1 0

这会产生一个大型数据框,最少 50k 个观测值和 90 个变量,最多测量 29 个周期。

我想获得一种更面向时期的格式,例如:
pid index start stop varA varB varC ...
1 1 ...
1 2
...
1 29
2 1

我尝试了不同的方法来 reshape 数据帧( *applyplyrreshape2 、循环、附加与预填充所有数字矩阵等),但似乎没有得到合适的处理时间(+40 分钟)子集)。在此过程中,我已经获得了有关应避免什么的各种提示,但我仍然不确定是否错过了某些瓶颈或可能的加速。

是否有一种最佳方法来处理这种数据处理,以便我可以评估在纯 R 代码中可以实现的最佳情况处理时间?已有 similar questions在 Stackoverflow 上,但他们没有给出令人信服的答案......

最佳答案

首先,让我们构建数据示例(我使用 5e3 而不是 50e3 以避免我的配置出现内存问题):

nObs <- 5e3
nVar <- 90
nPeriods <- 29

dat <- matrix(rnorm(nObs*nVar*nPeriods), nrow=nObs, ncol=nVar*nPeriods)

df <- data.frame(id=seq_len(nObs), dat)

nmsV <- paste('Var', seq_len(nVar), sep='')
nmsPeriods <- paste('T', seq_len(nPeriods), sep='')

nms <- c(outer(nmsV, nmsPeriods, paste, sep='_'))
names(df)[-1] <- nms

现在有了 stats::reshape你改变格式:
df2 <- reshape(df, dir = "long", varying = 2:((nVar*nPeriods)+1), sep = "_")

我不确定这是否是您正在寻找的快速解决方案。

关于performance - 加速将人 reshape 为 R 中的周期格式数据帧,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7791283/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com