2011-02-18 2 views
0

이전 게시물을 읽었지만 원하는 것을 얻을 수 없습니다. 나는 16 일 간격으로 세리를 얻을 필요가있다. (최소한 첫 번째와 마지막 날,이 경우 첫 번째/마지막 관측과 함께 간격을 시작/끝내야한다.) 나는 관측 된 변수가 상응하는 inteval과 NA에 위치하도록하고 싶다.불규칙한 시계열 M-D-Y hh : mm : ss를 일반 TS로 채우기 NA

mdyhms     Ya Yb 
Mar-27-2009 19:56:47 25 58.25 
Mar-27-2009 20:38:59 9 81.25 
Mar-28-2009 08:00:30 9 88.75 
Mar-28-2009 09:26:29 0 89.25 
Mar-28-2009 11:57:01 8.5 74.25 
Mar-28-2009 12:19:10 7.5 71.00 
Mar-28-2009 14:17:05 1.5 70.00 
Mar-28-2009 15:13:14 NA NA 
Mar-28-2009 17:09:53 4 85.50 
Mar-28-2009 18:37:24 0 86.00 
Mar-28-2009 19:19:23 0 50.50 
Mar-28-2009 20:45:50 0 36.25 
Mar-29-2009 08:44:16 4.5 34.50 
Mar-29-2009 10:35:12 8.5 39.50 
Mar-29-2009 11:09:13 3.67 69.00 
Mar-29-2009 12:40:07 0 54.25 
Mar-29-2009 14:31:48 5.33 35.75 
Mar-29-2009 16:19:27 6.33 71.75 
Mar-29-2009 16:43:20 7.5 64.75 
Mar-29-2009 18:37:42 8 83.75 
Mar-29-2009 20:01:26 6.17 93.75 
Mar-29-2009 20:43:53 NA NA 
Mar-30-2009 08:42:05 12.67 88.50 
Mar-30-2009 09:52:57 4.33 75.50 
Mar-30-2009 12:01:32 1.83 70.75 
Mar-30-2009 12:19:40 NA NA 
Mar-30-2009 14:23:37 3.83 86.75 
Mar-30-2009 16:00:59 37.33 80.25 
Mar-30-2009 17:19:28 10.17 77.75 
Mar-30-2009 17:49:12 9.83 73.00 
Mar-30-2009 20:06:00 11.17 76.75 
Mar-30-2009 21:40:35 20.33 68.25 
Mar-31-2009 08:11:12 18.33 69.75 
Mar-31-2009 09:51:29 14.5 65.50 
Mar-31-2009 11:10:41 NA NA 
Mar-31-2009 13:27:09 NA NA 
Mar-31-2009 13:44:35 NA NA 
Mar-31-2009 16:01:23 NA NA 
Mar-31-2009 16:56:14 NA NA 
Mar-31-2009 18:27:28 NA NA 
Mar-31-2009 19:17:46 NA NA 
Mar-31-2009 21:12:22 NA NA 
Apr-01-2009 08:35:24 2.33 60.25 
Apr-01-2009 09:24:49 1.33 71.50 
Apr-01-2009 11:28:34 5.67 62.00 
Apr-01-2009 13:31:48 NA NA 
Apr-01-2009 14:52:18 NA NA 
Apr-01-2009 15:11:44 1.5 71.50 
Apr-01-2009 17:00:53 3.17 84.00 

감사합니다 [아와 YB는 관찰 된 변수] : 다음과 같이

내 데이터는 봐!

+4

당신이 당신의 객체에'dput' 기능을 사용할 수 있습니다 ('dput (foo는)') 출력을 복사 하시겠습니까? 그렇게하면 데이터를 더 쉽게 읽을 수 있습니다. –

+0

감사합니다. Marek이 (가) 내 데이터를 편집 할 수있게되었습니다. 이제 어떻게 할 수 있습니까? – Erica

답변

4

데이터 프레임을 "데이터"라고 가정하면 xts package을 사용합니다. 작업하기가 훨씬 쉽습니다.

#Conversion of dates 
Data$time <- as.POSIXct(Data$mdyhms,format="%b-%d-%Y %H:%M:%S") 

#conversion to time series 
library(xts) 
TimeSeries <- xts(Data[,c("Ya","Yb")],Data[,"time"]) 

그런 다음 TimeSeries를 연속적으로 사용할 수 있습니다. 정기적 인 시계열이 없으므로 표준 TS를 사용할 수 없습니다. 지구상에서 어떤 방식으로도 당신의 관찰 사이의 시간 간격은 같다고 당신이 변호 할 수는 없습니다.

편집 :

코멘트에서 발언 관련하여

, 다음 시도 할 수 있습니다 :

#Calculate the period they're into 
#This is based on GMT and the fact that POSIXct gives the number of seconds 
#passed since the origin. 5400 is 1/16 of 86400 seconds in a day 

Data$mdyhms <- as.POSIXct(Data$mdyhms,format="%b-%d-%Y %H:%M:%S",tz="GMT") 
Data$Period <- as.numeric(Data$mdyhms) %/% 5400 * 5400 

#Make a new data frame with all periods in the range of the dataframe 

Date <- as.numeric(trunc(Data$mdyhms,"day")) 
nData <- data.frame(
    Period = seq(min(Date),max(Date)+86399,by=5400) 
) 
# Merge both dataframes and take the mean of values within a dataframe 

nData <- merge(Data[c('Ya','Yb','Period')],nData,by="Period",all=T) 
nData <- ddply(nData,"Period",mean,na.rm=T) 

#Make the time series and get rid of the NaN values 
#These come from averaging vectors with only NA 
TS <- ts(nData[c('Ya','Yb')],frequency=16) 
TS[is.nan(TS)] <- NA 
+0

@ Joris Meys Joris, 나는이 관찰의 특성에 관해서 당신과 동의합니다. 이 점을 제외하고는 관찰 된 변수가 해당 간격 (16 일)과 NA (다른 방식으로는 이것이 나의 목표 임)에 위치하게하고 싶습니다. 반면에 제안서를 적용하면이 오류가 발생합니다 : 문자열이 표준 모호하지 않은 형식으로되어 있지 않습니다. 감사! – Erica

+0

@Erica : 샘플 데이터의 타임 포인트를 감안할 때 추가 NA 관측치를 정확하게 입력해야 하는지를 결정하는 것은 불가능합니다. 모든 관측치는 서로 다른 시점에 있으며 그 사이의 간격에는 일관성이 없습니다. 따라서이를 수행 할 자동 방법이 없습니다. 오류에 관해서 : 나는 샘플 데이터로 시도해 보았고 완벽하게 작동했습니다. mdyhms는 변수 전체에서 동일한 방식으로 모든 곳에서 형식화 된 문자열이며, 먼저 POSIXct로 변환하는 것을 잊지 마십시오. –

+0

@ Erica : 간격을 정의하고 그것이 속하는 간격에 모든 시간대를 두더라도 몇 간격은 여전히 ​​2 개의 데이터 점을 얻습니다. 따라서이 작업을 수행 할 수있는 방법은 없습니다. –

관련 문제