gpt4 book ai didi

r - 找到在行之间进行计算的矢量化方式来执行 for 循环

转载 作者:行者123 更新时间:2023-12-04 11:29:39 25 4
gpt4 key购买 nike

我想找一个 矢量化 可以替换以下代码的过程(需要很长时间才能运行):

for (i in 2:nrow(z)) {
if (z$customerID[i]==z$customerID[i-1])
{z$timeDelta[i]<-(z$time[i]-z$time[i-1])} else {z$timeDelta[i]<- NA}
}

我尝试寻找不同的应用片段,但没有找到任何有用的东西。

以下是一些示例数据:
customerID    time
1 2013-04-17 15:30:00 IDT
1 2013-05-19 11:32:00 IDT
1 2013-05-20 10:14:00 IDT
2 2013-03-14 18:41:00 IST
2 2013-04-24 09:52:00 IDT
2 2013-04-24 17:08:00 IDT

我想获得以下输出:
customerID    time                        timeDelta*
1 2013-04-17 15:30:00 IDT NA
1 2013-05-19 11:32:00 IDT 31.83
1 2013-05-20 10:14:00 IDT 0.94
2 2013-03-14 18:41:00 IST NA
2 2013-04-24 09:52:00 IDT 40.59
2 2013-04-24 17:08:00 IDT 0.3

*I prefer the time will be in days

最佳答案

z$timeDelta <- NA
z$timeDelta[-1] <- ifelse(tail(z$customerID,-1) == head(z$customerID,-1), diff(z$time)/24, NA)

或更短的版本
z$timeDelta <- NA
z$timeDelta[-1] <- ifelse(!diff(z$customerID), diff(z$time)/24, NA)

关于r - 找到在行之间进行计算的矢量化方式来执行 for 循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18299036/

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