我有一个data.frame
,每月有72个时间序列,以长格式(垂直)堆叠。我使用拆分为每个系列创建list
data.frames
。我现在想要使用数据框中包含的data.frame
和xts
将每个value
转换为date
个对象。该列表有72个数据帧,我想要一个72 xts对象的返回列表。该列表如下:
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])
指针?
答案 0 :(得分: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)