2

我有一个data.frame以长形式(垂直)堆叠的 72 个每月时间序列。list我已经使用 split为data.frames每个系列创建了一个。我现在想使用数据帧中包含的 and 将每个对象data.frame转换为xts对象。该列表有 72 个数据框,我想要一个包含 72 个 xts 对象的返回列表。该列表如下所示:valuedate

LAUPS55030003:'data.frame': 282 obs. of  6 variables:
 ..$ series_id     : chr [1:282] "LAUPS55030003" "LAUPS55030003" "LAUPS55030003"    
 ...
 ..$ year          : int [1:282] 1990 1990 1990 1990 1990 1990 1990 1990 1990 1990 ...
 ..$ period        : chr [1:282] "01" "02" "03" "04" ...
  ..$ value         : num [1:282] 12.6 5.3 5.3 4.7 4.7 4.7 5.5 4.6 4.6 4.3 ...
  ..$ footnote_codes: chr [1:282] "" "" "" "" ...
  ..$ date          : Date[1:282], format: "1990-01-01" "1990-02-01" "1990-03-01" "1990-0 

我试过使用 llply 和 lapply 无济于事,甚至 ddply。尝试编写 as.xts 函数时出现错误。我认为我在正确的轨道上,但我的语法显然是错误的。

我也试过:

lx <- dlply(ur, .(ur$series_id), .fun=(as.xts), ur[,4], order.by=ur[,6])

指针?

4

1 回答 1

2

我不确定你的dlply电话有什么问题,但你应该使用xts而不是as.xts.

ur <- split(LAUPS55030003, LAUPS55030003$series_id)
xl <- lapply(ur, function(x) xts(x$value, x$date))
# and if you want each series in a column:
xc <- do.call(merge, xl)
于 2013-08-02T19:22:22.510 回答