我有一个大约3百万行的数据集,我想计算下一行和上一行之间的差值,但是当我们有这么多行时,R运行了很长时间。
nrow <- nrow(data_bitstamp) for (i in 2:nrow) { data_bitstamp$diff[i] <- difftime(data_bitstamp$arb[i], data_bitstamp$arb[i-1])}
这已经运行了一个小时,仍然没有结果。也许有一个修改,可以用来更快地得到结果。
muk1a3rh1#
您可以使用lag函数创建一个列表,该列表可以用作difftime函数的参数,如下所示。我还创建了一个 Dataframe 并添加了一些定时代码。
lag
difftime
# make a 10 million row data frame data_bitstamp = data.frame('arb' = rep(Sys.time(), 10000000)) starttheclock = Sys.time() # timing start lag_arb = lag(data_bitstamp$arb) data_bitstamp$diff = difftime(data_bitstamp$arb, lag_arb) stoptheclock = Sys.time() # timing end elapsed = stoptheclock - starttheclock elapsed # Time difference of 0.8299184 secs
lag和difftime可以在一行中完成,但为了清楚起见,我将它们分开显示。
1条答案
按热度按时间muk1a3rh1#
您可以使用
lag
函数创建一个列表,该列表可以用作difftime
函数的参数,如下所示。我还创建了一个 Dataframe 并添加了一些定时代码。lag
和difftime
可以在一行中完成,但为了清楚起见,我将它们分开显示。