r - Convert an irregular time series M-D-Y hh:mm:ss to regular TS filling with NA -


i had read previous post cannot obtain want. need obtain serie 16 intervals day (least first , last day, in these cases intervals start/end first/last observation). observed variables located in corresponding inteval , na otherwise.

my data follows: [ya , yb observed variables]

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 

thanks!

presuming dataframe called "data", i'd use xts package. they're whole lot easier work :

#conversion of dates data$time <- as.posixct(data$mdyhms,format="%b-%d-%y %h:%m:%s")  #conversion time series library(xts) timeseries <- xts(data[,c("ya","yb")],data[,"time"]) 

then timeseries can used subsequently. can't use normal ts, because don't have regular time series. no way on earth can defend time intervals between observations equal.

edit :

in regard of remarks in comments, can try following :

#calculate period they're #this based on gmt , fact posixct gives number of seconds #passed since origin. 5400 1/16 of 86400 seconds in 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 new data frame periods in range of dataframe  date <- as.numeric(trunc(data$mdyhms,"day")) ndata <- data.frame(     period = seq(min(date),max(date)+86399,by=5400) ) # merge both dataframes , take mean of values within dataframe  ndata <- merge(data[c('ya','yb','period')],ndata,by="period",all=t) ndata <- ddply(ndata,"period",mean,na.rm=t)  #make time series , rid of nan values #these come averaging vectors na ts <- ts(ndata[c('ya','yb')],frequency=16) ts[is.nan(ts)] <- na 

Comments

Popular posts from this blog

apache - Add omitted ? to URLs -

redirect - bbPress Forum - rewrite to wwww.mysite prohibits login -

php - How can I stop spam on my custom forum/blog? -