【发布时间】:2019-09-16 01:56:30
【问题描述】:
我有一个非常大的事件数据集 (df),其中每一行对应一个测量值、时间点 (df$TimeSec) 和事件 ID (df$Source)。
下面的循环创建一个列df$TimeDiff,它计算当前行时间戳和下一个时间戳之间的时间差。它还检查Source 是否已更改,因此新事件的第一行具有TimeDiff 或NA。
我正在尝试将我的思维方式从循环转变为利用 R 的矢量化并希望提高处理速度。
for(i in 1:nrow(df)){
if(df$Source[i+1] == df$Source[i]){
df$TimeDiff[i+1] <- df$TimeSec[i+1] - df$TimeSec[i]
}else{
df$TimeDiff[i+1] <- NA
}
}
总的来说,上面的循环完全符合我的要求,但我想看看是否有更好的方法可以节省处理时间。谢谢!
【问题讨论】:
标签: r loops vectorization