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: [EMAIL PROTECTED] >[mailto:[EMAIL PROTECTED] 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 <[EMAIL PROTECTED]> 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]]
______________________________________________ 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.