我有不规则的时间序列数据框,有 time (秒)和 value 列 . 我想添加另一列 value_2 ,其中值由 delay 秒引导 . 所以 value_2 在时间 t 等于 value 时 t + delay 或之后 .
ts=data.frame(
time=c(1,2,3,5,8,10,11,15,20,23),
value=c(1,2,3,4,5,6,7,8,9,10)
)
ts_with_delayed_value
> ts_with_delayed_value
time value value_2
1 1 1 3
2 2 2 4
3 3 3 4
4 5 4 5
5 8 5 6
6 10 6 8
7 11 7 8
8 15 8 9
9 20 9 10
10 23 10 10
我有自己的这个函数版本 add_delayed_value ,这里是:
add_delayed_value
colname_delayed
data[colname_delayed]
for (i in 1:nrow(data)) {
time_delayed
value_delayed = time_delayed, colname][1]
if (is.na(value_delayed)) {
value_delayed
}
data[i, colname_delayed]
}
return(data)
}
有没有办法对这个例程进行矢量化以避免慢循环?
我对R很新,所以这段代码可能有很多问题 . 有什么可以改进的?