使用开始和结束时间段的变量对xts对象进行分组

时间:2019-01-18 12:11:50

标签: r xts

我有一个名为'usagexts'的xts对象,其日期为15年10月15日至3月31日。我想为该对象创建3个子集,时间范围为01 Oct 15至31 Mar 16,01 Oct 16至31 Mar 17以及从10月17日至18年3月31日,实际上并未对日期进行硬编码,因为日期会随着时间的流逝而改变。

对象结构如下:

dateperiod,usageval
2015-10-01,21542
2015-10-02,21572
2015-10-03,21342
...
...
2018-03-31,20942

我还有一个名为“ periodvalues”的数据框,如下所示:-

startdate,enddate, periodtext
2015-10-01,2016-03-31,1510_1603
2016-10-01,2017-03-31,1610_1703
2017-10-01,2018-03-31,1710_1803

我希望能够像这样创建3个xts对象:-

usagexts_1510_1603 -> xts object containing usage details for relevant period
usagexts_1610_1703 -> xts object containing usage details for relevant period
usagexts_1710_1803 -> xts object containing usage details for relevant period

我只能从上面的数据帧中创建一个包含周期文本的大小为3的列表。我试图通过变量使用“对象名fromdate / todate”结构以某种方式指定xts对象的开始和结束时间,但是它不起作用-像这样:

usagexts_1610_1703 <- usagexts[var1/var2]

LHS来自列表,RHS上的变量来自之前进行的变量定义。

usagexts_1610_1703 <- usagexts[var1/var2]

预期结果应该像这样:

usagexts_1510_1603 <- usagexts["2015-10-01/2016-03-31"]
usagexts_1610_1703 <- usagexts["2016-10-01/2017-03-31"]
usagexts_1710_1803 <- usagexts["2017-10-01/2018-03-31"]

对此的任何协助都将得到高度重视。

最诚挚的问候

Deepak

1 个答案:

答案 0 :(得分:0)

如果var1和var2是变量,则可以使用粘贴方式将过滤器字符串指定为:

 usagexts[paste(var1, var2, sep="/")]