R将POSIXlt转换为xts

R将POSIXlt转换为xts,r,dataframe,time-series,xts,R,Dataframe,Time Series,Xts,我有以下格式的时间序列: > str(Y$Date) POSIXlt[1:174110], format: "2001-01-01 12:00:00" "2001-01-01 05:30:00" "2001-01-02 01:30:00" "2001-01-02 02:00:00" "2001-01-02 02:00:00" "2001-01-02 02:01:00" "2001-01-02 04:00:00" "2001-01-02 04:00:00" ... > summary

我有以下格式的时间序列:

> str(Y$Date)
POSIXlt[1:174110], format: "2001-01-01 12:00:00" "2001-01-01 05:30:00" "2001-01-02 01:30:00" "2001-01-02 02:00:00" "2001-01-02 02:00:00" "2001-01-02 02:01:00" "2001-01-02 04:00:00" "2001-01-02 04:00:00" ...

> summary(Y$Date)
                 Min.               1st Qu.                Median                  Mean               3rd Qu.                  Max. 
"2001-01-01 05:30:00" "2004-03-15 10:40:30" "2007-01-03 04:00:00" "2006-11-11 15:53:11" "2009-08-13 12:00:00" "2011-12-30 12:30:00" 

> length(Y$Date)
[1] 174110
我需要将其转换为xts格式。为此,我采取了以下措施:

date <- Y$Date
date <- as.xts(date)
> xtsible(date) #tests wheather or not the data is convertibal to format xts
[1] TRUE
为了将数据返回到数据帧中:

> Y$date <- date
Error in `$<-.data.frame`(`*tmp*`, "date", value = numeric(0)) : 
  replacement has 0 rows, data has 174110
我不知道为什么我不能正确地将数据转换成xts格式,然后再将它们返回到数据帧中


非常感谢您的帮助。

我已经回答了您之前提出的一个类似问题。我想这会引起一些混乱。当您看到
?xts
时,它说
xts
创建了一个“可扩展的时间序列”“反对。首先,我们必须指定时间序列的对象
x
,然后指定索引,即时间序列本身(
Y$Date

以下是一个简化的解决方案:

Y_new <- xts(x = Y[,-1], order.by = Y$Date]

Y\u新建请同时粘贴
str(Y)
的输出。确定。非常感谢您的帮助。我在这里不明白什么?在我看来,您似乎试图从数据框中提取日期,创建一个
xts
对象,将这些日期作为
索引
,从
xts
中提取日期,然后将它们放回数据框中。不变。以及:“为了将数据返回到数据帧中”;您的
xts
对象没有任何数据,只有一个
索引,即您从数据框中选择的日期。也许你可以加上一两句关于你总体目标的话。干杯,当然,亨里克。我能帮上什么忙吗。我需要分析这些变量在不同时期随时间的变化(例如01-02和01-04等)。我已经发布了以下问题:并按照它的建议,将POSIXlt格式更改为xts。然而,在这样做的过程中,我遇到了上述问题。你的分析是正确的,再次感谢你!你真的救了我一天。
> as.data.frame(date)
Error in data.frame(`coredata(x)` = c(NA_character_, NA_character_, NA_character_,  : 
   duplicate row.names: 2001-01-02 02:00:00, ... , 2001-01-08 06:00:00, 200
In addition: Warning message:
In format.data.frame(x, digits = digits, na.encode = FALSE) :
  corrupt data frame: columns will be truncated or padded with NAs

> str(Y)
'data.frame':   174110 obs. of  17 variables:
 $ Date    : POSIXlt, format: "2001-01-01 12:00:00" "2001-01-01 05:30:00" "2001-01-02 01:30:00" "2001-01-02 02:00:00" ...
 $ C       : chr  "MA" "IN" "SI" "ID" ...
 $ Event   : chr  "MALAY VEHICLE SALES" "Interbank Offer Rate - Percent" "Advance GDP Estimate (YoY)" "Foreign Reserves" ...
 $ News    : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Growth  : num  148 NA 0.3 387.2 0 ...
 $ Surv.M  : num  NA NA NA NA NA NA NA NA NA NA ...
 $ Act     : num  30892 NA 10.5 29281.4 12500 ...
 $ Prior   : num  30744 8100 10.2 28894.2 12500 ...
 $ Revised : num  NA NA NA NA NA ...
 $ Type    : chr  NA NA "%" "$B" ...
 $ Freq.   : chr  "M" "NA" "Q" "M" ...
 $ Ticker  : chr  "MAVSTTL Index" "IMIBOR Index" "SGAVYOY% Index" "IDGFA Index" ...
 $ Period  : chr  "Nov" "12/31/13" "4Q" "Dec" ...
 $ Category: chr  "NA" "NA" "NA" "NA" ...
 $ Time    : chr  "12:00:00 AM" "05:30:00 AM" "01:30:00 AM" "02:00:00 AM" ...
 $ Country : chr  "Malaysia" "India" "Singapore" "Indonesia" ...
 $ date    : POSIXlt, format: "2001-01-01 12:00:00" "2001-01-01 05:30:00" "2001-01-02 01:30:00" "2001-01-02 02:00:00" ...
Y_new <- xts(x = Y[,-1], order.by = Y$Date]