使用变量作为开始和结束期间的子集 xts 对象

Subset xts object using variables for start and end periods

我有一个名为 'usagexts' 的 xts 对象,日期为 2015 年 10 月 1 日至 2018 年 3 月 31 日。我想在 10 月 15 日至 2016 年 10 月 1 日至 2016 年 3 月 31 日、10 月 16 日期间创建该对象的 3 个子集到 17 年 3 月 31 日和 17 年 10 月 1 日到 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 的列表,其中包含来自上述数据框的句点文本。我试图通过变量使用 "objectname fromdate/todate" 结构以某种方式指定 xts 对象的开始和结束时间段,但它不起作用 - 像这样:

usagexts_1610_1703 <- usagexts[var1/var2]

左轴来自列表,右轴的变量来自之前定义的变量。

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"]

对此的任何帮助都将受到高度重视。

此致

迪帕克

如果 var1 和 var2 是变量,则可以使用 paste as 指定过滤字符串:

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