2016-10-17 5 views
1

100 밀리 초 시계열에서 1 초 시계열을 집계해야합니다. 나는 xts 형식으로 데이터를 변환 한 후 Rxts에 함수 to.period()을 사용한다. 오류 : 지원되지 않는 유형입니다.xts 라이브러리를 사용하여 밀리 초 시계열을 1 초로 집계

x <- xts(data, order.by = as.POSIXct(data$Time, format = "%H:%M:%S.%ms")) 
to.period(x, period = "seconds", k=1) 
Error in to.period(x, period = "seconds", k = 1) : unsupported type 

마침표 = 분 이상을 시도하면 같은 오류가 발생합니다. 내 데이터가 밀리 초 형식으로 또는 다른 이유가 있기 때문에

   Date   Time Price  Amount 
<NA> "2014/10/26" "17:30:12.500" "1.268" "1000000" 
<NA> "2014/10/26" "17:33:28.900" "1.268" "1000000" 
<NA> "2014/10/26" "17:33:52.600" "1.268" "1000000" 

맥 OS

이 오류인가? 오류를 수정하려면 어떻게해야합니까?

답변

2

코드에 몇 가지 문제가 있습니다. 나는이 두 클래스를 더 잘 이해하기 위해 동물원과 xts 비 네트를 읽는 데 몇 분을 보냈다.

data <- structure(list(Date = c("2014/10/26", "2014/10/26", "2014/10/26"), 
    Time = c("17:30:12.500", "17:33:28.900", "17:33:52.600"), 
    Price = c(1.268, 1.268, 1.268), Amount = c(1000000L, 1000000L, 1000000L)), 
    .Names = c("Date", "Time", "Price", "Amount"), class = "data.frame", 
    row.names = c(NA, -3L)) 

xts 생성자에 대한 귀하의 전화가 작동하지 않습니다

은 가정 당신의 data는 것 같습니다.

x <- xts(data, order.by = as.POSIXct(data$Time, format = "%H:%M:%S.%ms")) 

data$Time 그냥 시간이 아닌 날짜, 그래서 as.POSIXct 오늘 날짜를 사용합니다. 그러나 형식을 잘못 지정했기 때문에이 방법이 작동하지 않습니다 ("%ms"은 유효한 형식입니다 (?strptime 참조). 결과 값은 모두 NA이됩니다.

data에 여러 유형의 데이터 (문자 (배수?), 배수, 정수)가 포함되어 있고 xts 객체가 색인 속성이있는 행렬이기 때문에이 두 가지 문제를 해결 한 후에도 코드가 작동하지 않으며 ' 매트릭스에서 유형을 혼합하십시오. 따라서 xts 객체의 coredata에서 Date 및 Time 열을 제외해야합니다. 그리고 format 인수를 as.POSIXct으로 올바르게 지정해야합니다.

x <- xts(data[,c("Price", "Amount")], 
    order.by=as.POSIXct(paste(data$Date, data$Time), format="%Y/%m/%d %H:%M:%OS")) 

지금 to.period 작동합니다 : 당신은 볼륨과 양의 열을 집계 할 경우

to.period(x, "seconds") 
#      x.Open x.High x.Low x.Close 
# 2014-10-26 17:30:12 1.268 1.268 1.268 1.268 
# 2014-10-26 17:33:28 1.268 1.268 1.268 1.268 
# 2014-10-26 17:33:52 1.268 1.268 1.268 1.268 

, 당신은 to.period를 호출하기 전에 이름을 변경해야합니다.

colnames(x)[2] <- "Volume" 
to.period(x, "seconds") 
#      x.Open x.High x.Low x.Close x.Volume 
# 2014-10-26 17:30:12 1.268 1.268 1.268 1.268 1e+06 
# 2014-10-26 17:33:28 1.268 1.268 1.268 1.268 1e+06 
# 2014-10-26 17:33:52 1.268 1.268 1.268 1.268 1e+06 
+0

조슈아, 도와 줘서 고마워. 나는 당신이 말했듯이 실수를 수정했지만 여전히 같은 오류가 있습니다. (데이터 $ Date 및 데이터 $ Time을 데이터 [, 1] 및 데이터 [, 2]로 대체해야 함) 또한 시간 형식은 "% Y/% m/% d % H : % M : % OS"입니까 –

+0

죄송합니다 , 여기서 계속하겠습니다 ... format = "% Y/% m/% d % H : % M : % OS"는 밀리 초를 나타내지 않지만 % OS1 (또는 OSn)) 여기서 작동하지 않습니다. 내가 도대체 ​​뭘 잘못하고있는 겁니까? –

+0

@EniyaAlby : 기본적으로 밀리 초가 인쇄되도록하려면 options (digits.secs = 3)을 설정해야합니다. 그들이 인쇄하지 않는다고해서 그들이 거기 있지 않다는 것을 의미하지는 않습니다. ;-) –

관련 문제