R 如何用从第7行开始的滞后替换数据集中的每六行
我想用滞后替换数据集中R 如何用从第7行开始的滞后替换数据集中的每六行,r,dataframe,time-series,xts,R,Dataframe,Time Series,Xts,我想用滞后替换数据集中xts中的每六行。这个过程应该从第7行开始,这意味着第7行将被第6行取代,第13行将被第12行取代,依此类推。下面是一个使用子集的简单方法: myxts <- xts::xts(x = 1:100, order.by = seq.Date(from = as.Date("2019-10-17"), by = "d", length.out = 100)) myxts[1:floor(nrow(myxts) / 6) * 6 + 1, ] <- myxts[1:
xts
中的每六行。这个过程应该从第7行开始,这意味着第7行将被第6行取代,第13行将被第12行取代,依此类推。下面是一个使用子集的简单方法:
myxts <- xts::xts(x = 1:100, order.by = seq.Date(from = as.Date("2019-10-17"), by = "d", length.out = 100))
myxts[1:floor(nrow(myxts) / 6) * 6 + 1, ] <- myxts[1:floor(nrow(myxts) / 6) * 6, ]
2019-10-17 1
2019-10-18 2
2019-10-19 3
2019-10-20 4
2019-10-21 5
2019-10-22 6
2019-10-23 6
2019-10-24 8
2019-10-25 9
2019-10-26 10
2019-10-27 11
2019-10-28 12
2019-10-29 12
2019-10-30 14
2019-10-31 15
myxts下面是一种使用子集的简单方法:
myxts <- xts::xts(x = 1:100, order.by = seq.Date(from = as.Date("2019-10-17"), by = "d", length.out = 100))
myxts[1:floor(nrow(myxts) / 6) * 6 + 1, ] <- myxts[1:floor(nrow(myxts) / 6) * 6, ]
2019-10-17 1
2019-10-18 2
2019-10-19 3
2019-10-20 4
2019-10-21 5
2019-10-22 6
2019-10-23 6
2019-10-24 8
2019-10-25 9
2019-10-26 10
2019-10-27 11
2019-10-28 12
2019-10-29 12
2019-10-30 14
2019-10-31 15
myxts如果索引是6的倍数后的1,则下面的代码将从索引中减去1。因此,7将成为索引6,13将成为12,等等。用这个新索引子集您的xts对象将给出您描述的结果
i <- seq(nrow(myxts))
myxts[i - (i %% 6L == 1L),]
i如果索引是6的倍数后的1,则下面的代码将从索引中减去1。因此,7将成为索引6,13将成为12,等等。用这个新索引子集您的xts对象将给出您描述的结果
i <- seq(nrow(myxts))
myxts[i - (i %% 6L == 1L),]
运行此代码的i在[.xts
中给出此错误(x,i,其中.i=TRUE):subscript out boundscan您可以用192列事务复制此示例。我刚刚尝试了一个新的R会话,它工作得很好。您可以重新启动R并重试吗?如果它不工作:您使用的是哪个R版本?您可以发布sessionInfo()的输出吗
?这也适用于多列,其工作方式与适用于一列的方式相同。ok R版本3.6.0(2019-04-26)平台:x86_64-w64-mingw32/x64(64位),运行此代码的Windows 10 x64(build 17134)在[.xts
中给出此错误(x,i,which.i=TRUE):subscript out boundscan您可以用192列事务复制此示例。我刚刚尝试了一个新的R会话,它工作得很好。您可以重新启动R并重试吗?如果它不工作:您使用的是哪个R版本?您可以发布sessionInfo()的输出吗
?这同样适用于多列。ok R版本3.6.0(2019-04-26)平台:x86_64-w64-mingw32/x64(64位)运行于:Windows 10 x64(build 17134)谢谢先生您拯救了我的一天谢谢先生您拯救了我的一天