[R] Generation of missiing values in a time serie...
Alvaro Saurin
saurin at dcs.gla.ac.uk
Tue Dec 13 13:54:27 CET 2005
Hi,
First, thank you. It 'almost' works: I can convert a matrix to a
'zoo' object, but it can not convert it to a 'ts'.
The sitruation is this: I load a set of samples with
> h_types <- list (0, 0, character(0), character(0), 0, 0, 0, 0, 0)
> h_names <- list ("time", "flow", "type", "dir", "seq", "ts", "x",
"rtt", "size")
> pcks_file <- pipe ("grep ' P ' server.dat"), "r")
> pcks <- scan (pcks_file, what = h_types, comment.char = '#',
fill = TRUE)
Read 1429 records
> mat <- data.frame (pcks)
> colnames (mat) <- h_names
> mat
time flow type dir seq ts x rtt size
1 1.000893 0 P + 0 1.000893 1472 0.000000 1472
2 1.514454 0 P + 1 1.514454 2944 0.513142 1472
3 2.015093 0 P + 2 2.015093 2944 0.513142 1472
4 2.515025 0 P + 3 2.515025 4806 0.504488 1472
5 2.821976 0 P + 4 2.821976 5730 0.496728 1472
6 3.078931 0 P + 5 3.078931 5832 0.489744 1472
7 3.331897 0 P + 6 3.331897 5832 0.489744 1472
[...]
1425 176.925504 0 P + 1424 176.925504 12141 0.764699 1472
1426 177.039489 0 P + 1425 177.039489 12141 0.764699 1472
1427 177.153469 0 P + 1426 177.153469 12141 0.764699 1472
1428 177.267464 0 P + 1427 177.267464 12141 0.764699 1472
1429 177.381434 0 P + 1428 177.381434 12141 0.764699 1472
Then I convert it to a 'zoo', removing the 'time' column from the input
> last_col <- ncol (mat)
> range_cols <- 2:last_col
> matrix_values <- mat [,range_cols]
> z <- zoo (matrix_values, mat $ time)
So far, everything is fine. But then I need to apply a function to
samples taken every t seconds, ie, the mean every 10 seconds. And,
AFAIK, rapply needs a constant 'width', something that can only be
obtained with regular time series... But if I try to get a 'ts'
object from my 'zoo' I get
> as.ts (z)
Error in if (del == 0 && to == 0) return(to) :
missing value where TRUE/FALSE needed
Ummm, do you know if there is any error in my 'zoo' object? Has it
the right format? Or, could I avoid the conversion and use the
'rapply' function but on time intervals (instead of points intervals)?
Thank you very much.
Alvaro
On 12 Dec 2005, at 16:31, Gabor Grothendieck wrote:
> First we generate some sample data x and its times tt.
> Then using the zoo package we create an irregularly
> spaced time series. Now if you want a regularly spaced
> time series convert it to ts class. After loading zoo as
> shown below, the R command vignette("zoo") gives more info.
>
> x <- 1:4
> tt <- c(1, 3, 4, 6)
>
> library(zoo)
> x.zoo <- zoo(x, tt) # irregularly spaced time series
> x.ts <- as.ts(x.zoo) # regular time series with NAs
>
>
> On 12/12/05, Alvaro Saurin <saurin at dcs.gla.ac.uk> wrote:
>>
>> Hi,
>>
>> I am a R begginer and I have a small problem with time series. I was
>> wondering if someone could help me
>>
>> I am collecting data from packets going through a network, and using
>> R for obtaining some simple statistics of connections. However, my
>> data is not collected at a constant frequency, so I would like to
>> create a evenly spaced TS from my traces, using the minimum time
>> difference between two samples as the period for my new TS, and
>> filling the gaps with NA (or 0s).
>>
>> I think ther must be some simple solution for this... Anyone could
>> help me?
>>
>> Thanks in advance.
>>
>> --
>> Alvaro Saurin <alvaro.saurin at gmail.com> <saurin at dcs.gla.ac.uk>
>>
>> ______________________________________________
>> R-help at stat.math.ethz.ch mailing list
>> https://stat.ethz.ch/mailman/listinfo/r-help
>> PLEASE do read the posting guide! http://www.R-project.org/posting-
>> guide.html
>>
--
Alvaro Saurin <alvaro.saurin at gmail.com> <saurin at dcs.gla.ac.uk>
More information about the R-help
mailing list