I think the following does what you want:
> (d <- structure(c(6586, 6586, 6589, 6593, 6593, 6593, 6598, 6598, 6598,
6598), class = "Date"))
[1] "1988-01-13" "1988-01-13" "1988-01-16"
"1988-01-20" "1988-01-20"
"1988-01-20" "1988-01-25"
[8] "1988-01-25" "1988-01-25"
"1988-01-25"> (td <- table(d))
d
6586 6589 6593 6598
2 1 3 4 > names(td) <- as.Date(as.numeric(names(td))) # to make the names more
readable> print(td)
1988-01-13 1988-01-16 1988-01-20 1988-01-25
2 1 3 4 >
HTH,
Tobias
>-----Original Message-----
>From: r-help-bounces@stat.math.ethz.ch
>[mailto:r-help-bounces@stat.math.ethz.ch] On Behalf Of antonio
>rodriguez
>Sent: 02 November 2006 09:58 AM
>To: Gabor Grothendieck
>Cc: R-Help
>Subject: Re: [R] subsetting, aggregating and zoo
>
>Dear Gabor,
>
>The solution below was very useful for me, but I have, I hope,
>one last question about extracting some specific data. How to
>count , from below, the number of times a date is repeated, that is:
>
>starts
>
>[1] "1988-01-13" "1988-01-13" "1988-01-16"
"1988-01-20" "1988-01-20"
>[6] "1988-01-20" "1988-01-25" "1988-01-25"
"1988-01-25" "1988-01-25"
>
>dput(starts[1:10], control = "all")
>structure(c(6586, 6586, 6589, 6593, 6593, 6593, 6598, 6598,
>6598, 6598), class = "Date")
>
>So I need to know how many times, for example, "1988-01-03" is
>repeated (in this case, 2 times) Can't find what function to use.
>
>Best regards,
>
>Antonio
>
>
>
>
>Gabor Grothendieck escribió:
>> Sorry, the line starting idx <- should have time(z) in place of z.
>> That is,
>>
>> year <- as.Date(c(
>> "1988-01-13", "1988-01-14", "1988-01-16",
"1988-01-20",
>"1988-01-21",
>> "1988-01-22", "1988-01-25", "1988-01-26",
"1988-01-27",
>"1988-01-28"))
>>
>> x <- c(
>> 7.973946, 9.933518, 7.978227, 7.512960, 6.641862, 5.667780,
>> 5.721358,
>> 6.863729, 9.600000, 9.049846)
>>
>> z <- zoo(x, year)
>>
>> idx <- cumsum(c(1, diff(time(z)) != 1))
>>
>> starts <- time(z)[match(idx, idx)]
>> ends <- time(z)[cumsum(table(idx))[idx]]
>>
>> aggregate(z, starts, mean)
>>
>>
>> By the way, dput(v, control = "all") will output variable v
>in a form
>> easily pastable by someone else into their session.
>>
>> On 10/29/06, antonio rodriguez <antonio.raju@gmail.com> wrote:
>>> Gabor Grothendieck escribió:
>>> > Try this:
>>> >
>>> > # test data
>>> > x <- c(1:4, 6:8, 10:14)
>>> > z <- zoo(x, as.Date(x))
>>> >
>>> > # idx is 1 for first run, 2 for second run, etc.
>>> > idx <- cumsum(c(1, diff(z) != 1))
>>> >
>>> > # starts replaces each time with the start time of that
>run # ends
>>> > is similar but for ends starts <- time(z)[match(idx,
>idx)] ends <-
>>> > time(z)[cumsum(table(idx))[idx]]
>>> >
>>> > # average over each run using the time of the end of run for
the
>>> result
>>> > # replace ends with starts if that is preferred
>aggregate(z, ends,
>>> > mean)
>>> >
>>> Yes it's OK in your example, but when I try to do it with my
data I
>>> don't get the same figure.
>>>
>>> is.zoo(z)
>>> [1]TRUE
>>>
>>> atributes(z)
>>> $index
>>> [1] "1988-01-13" "1988-01-14"
"1988-01-16" "1988-01-20"
>"1988-01-21"
>>>
>...............................................................
>...................................
>>>
>>> [3861] "2005-12-20" "2005-12-23"
"2005-12-24" "2005-12-25"
>"2005-12-26"
>>> [3866] "2005-12-27" "2005-12-30"
>>>
>>> $class
>>> [1] "zoo"
>>>
>>> z[1:10]
>>>
>>> 1988-01-13 1988-01-14 1988-01-16 1988-01-20 1988-01-21 1988-01-22
>>> 1988-01-25
>>> 7.973946 9.933518 7.978227 7.512960 6.641862 5.667780
>>> 5.721358
>>> 1988-01-26 1988-01-27 1988-01-28
>>> 6.863729 9.600000 9.049846
>>>
>>> If I follow your instructions,
>>>
>>> idx <- cumsum(c(1, diff(z) != 1))
>>> starts <- time(z)[match(idx, idx)]
>>> ends <- time(z)[cumsum(table(idx))[idx]]
>>>
>>> s1 <- aggregate(z, starts, mean)
>>> s1[1:10]
>>>
>>> 1988-01-13 1988-01-14 1988-01-16 1988-01-20 1988-01-21 1988-01-22
>>> 1988-01-25
>>> 7.973946 9.933518 7.978227 7.512960 6.641862 5.667780
>>> 5.721358
>>> 1988-01-26 1988-01-27 1988-01-28
>>> 6.863729 9.600000 9.049846
>>>
>>> s2 <- aggregate(z, starts, mean)
>>> s2[1:10]
>>>
>>> 1988-01-13 1988-01-14 1988-01-16 1988-01-20 1988-01-21 1988-01-22
>>> 1988-01-25
>>> 7.973946 9.933518 7.978227 7.512960 6.641862 5.667780
>>> 5.721358
>>> 1988-01-26 1988-01-27 1988-01-28
>>> 6.863729 9.600000 9.049846
>>>
>>>
>>> Always the same. Don't know why (there are not NA's in the
series)
>>>
>>> Antonio
>>>
>>>
>>>
>>>
>>>
>>>
>>>
>>
>
>______________________________________________
>R-help@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
>and provide commented, minimal, self-contained, reproducible code.
>
********************
Nedbank Limited Reg No 1951/000009/06. The following link displays the names of
the Nedbank Board of Directors and Company Secretary. [
http://www.nedbank.co.za/terms/DirectorsNedbank.htm ]
This email is confidential and is intended for the addressee only. The following
link will take you to Nedbank's legal notice. [
http://www.nedbank.co.za/terms/EmailDisclaimer.htm ]
********************
[[alternative HTML version deleted]]