R 将一致性数据帧应用于zoo对象
我有一个由几个时间序列组成的动物园对象,如下所示:R 将一致性数据帧应用于zoo对象,r,zoo,R,Zoo,我有一个由几个时间序列组成的动物园对象,如下所示: indices <- seq.Date(as.Date('2000-01-01'),as.Date('2005-01-30'),by="year") a <- zoo(rnorm(5), order.by=indices) b <- zoo(rnorm(5), order.by=indices) c <- zoo(rnorm(5), order.by=indices) ts_origin <-
indices <- seq.Date(as.Date('2000-01-01'),as.Date('2005-01-30'),by="year")
a <- zoo(rnorm(5), order.by=indices)
b <- zoo(rnorm(5), order.by=indices)
c <- zoo(rnorm(5), order.by=indices)
ts_origin <- merge(a,b,c)
set.seed(123)
tt <- as.Date(ISOdate(2000:2005, 1, 1))
m <- matrix(rnorm(6*3), 6, dimnames = list(NULL, c("a", "b", "c")))
ts_origin <- zoo(m, tt)
df <- data.frame(original = c("a","b","c"),
final = c("d","e","f"),
ratio = c(10,100,1000))
索引这里是一行,最后的名字是错误的
ts_final <- t(df$ratio * t(ts_origin))
ts_final
# a b c
#2000-01-01 -5.382213 -12.64773 -513.6408
#2001-01-01 -9.218280 -98.55123 -1826.6430
#2002-01-01 2.114663 -28.58910 290.8008
#2003-01-01 -3.576460 -23.47314 -166.5473
#2004-01-01 6.490508 -36.29317 -398.0389
#2005-01-01 -5.382213 -12.64773 -513.6408
colnames(ts_final) <- df$final
ts_final这里有一行,最后的名字有误
ts_final <- t(df$ratio * t(ts_origin))
ts_final
# a b c
#2000-01-01 -5.382213 -12.64773 -513.6408
#2001-01-01 -9.218280 -98.55123 -1826.6430
#2002-01-01 2.114663 -28.58910 290.8008
#2003-01-01 -3.576460 -23.47314 -166.5473
#2004-01-01 6.490508 -36.29317 -398.0389
#2005-01-01 -5.382213 -12.64773 -513.6408
colnames(ts_final) <- df$final
ts_final1)映射/合并
使用Map
迭代final
、original
和ratio
执行所需产品,生成动物园对象列表L
。请注意,Map
从fun
之后的第一个参数中获取名称。然后合并构成zoo对象的列表组件ts_final
fun <- function(f, o, r) ts_origin[, o] * r
L <- with(df, Map(fun, final, original, ratio))
ts_final <- do.call("merge", L)
2)扫描
另一种方法是清除
比率,适当设置名称,给出与(1)相同的结果
3)代表
设置名称并乘以适当重复的比率,得到与(1)相同的结果
nr1)映射/合并
使用Map
迭代final
、original
和ratio
执行所需产品,生成动物园对象列表L
。请注意,Map
从fun
之后的第一个参数中获取名称。然后合并构成zoo对象的列表组件ts_final
fun <- function(f, o, r) ts_origin[, o] * r
L <- with(df, Map(fun, final, original, ratio))
ts_final <- do.call("merge", L)
2)扫描
另一种方法是清除
比率,适当设置名称,给出与(1)相同的结果
3)代表
设置名称并乘以适当重复的比率,得到与(1)相同的结果
nr
set.seed(123)
tt <- as.Date(ISOdate(2000:2005, 1, 1))
m <- matrix(rnorm(6*3), 6, dimnames = list(NULL, c("a", "b", "c")))
ts_origin <- zoo(m, tt)
df <- data.frame(original = c("a","b","c"),
final = c("d","e","f"),
ratio = c(10,100,1000))