这是一个问题,可以从这个(R: Recreate historical membership from a list of changes in membership)问题继续。
那里讨论的问题实际上源于对金融普遍感兴趣的问题,其中我们通常拥有指数的成员股,然后是指数成员资格的变化。我们通常希望重新创建此成员资格,手头的数据是当前成员资格以及更改的日期。
但是,典型的问题是为常规时间序列(例如每日,每周等)生成此成员资格,而更改本身就是一个不规则的时间序列。
上述链接问题中建议的方法可以这种方式使用:
我想编写recreate.memship
函数的函数方法,它可以为R中任何时间序列类中给出的indx
做正确的事。我能想到的一种方法是定义每个已知类的方法,例如ts
,Date
,zoo
,xts
,......存在seq
方法。
这个冗长的讨论之后的问题是双重的:
答案 0 :(得分:2)
xts已经允许这样做了。请查看package vignette的第4部分。
基本上,您在功能开头调用try.xts
,在结尾调用reclass
。我在TTR包中使用这个范例。例如:
R> momentum
function (x, n = 1, na.pad = TRUE)
{
x <- try.xts(x, error = as.matrix)
if (is.xts(x)) {
mom <- diff(x, n, na.pad = na.pad)
}
else {
NAs <- NULL
if (na.pad) {
NAs <- rep(NA, n)
}
mom <- c(NAs, diff(x, n))
}
reclass(mom, x)
}
<environment: namespace:TTR>