我有一个名为'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
答案 0 :(得分:0)
如果var1和var2是变量,则可以使用粘贴方式将过滤器字符串指定为:
usagexts[paste(var1, var2, sep="/")]