Hello,

With on«bjects of class "Date" or "POSIXt", POSIXct" you can do

lubridate::year(date_obj)

to extract the year. Then aggregate by it.

Hope this helps,

Rui Barradas

Às 08:25 de 28/01/2019, Diego Avesani escreveu:
Dear Jeff, Dear Rui, Dear all,

Forget about the monthly things. I was trying to do two things at the same time. I try to explain myself. Thanks for your time and I really appreciate your help.

I have  a long file with hourly precipitation from 2000 to 2018. I would like to select only on e year or even half of a year and plot the cumulative precipitation of it in order to compare it with the simulation data that I have.

So far I was able only to read all the file:
dati <- read.csv(file="116.txt", header=FALSE, sep="," , na.strings="-999",skip = 6)

and to plot the entire cumulative:
P <- cumsum(dati$PREC)
plot(dati$DATAORA, P)

How can I choose only, for example, 2013 in order to have P?
thanks again


Diego



On Mon, 28 Jan 2019 at 02:36, Jeff Newmiller <jdnew...@dcn.davis.ca.us <mailto:jdnew...@dcn.davis.ca.us>> wrote:

    I have no idea what you mean when you say "select starting date and
    ending
    date properly form [sic] datai$DATA". For one thing there is no column
    called DATA, and for another I don't know what starting dates and
    ending
    dates you might be interested in. If you need help to subset by time,
    perhaps you should ask a question about that instead.

    Here is a reproducible example of making monthly data and
    manipulating it
    using artificial data:

    ###############
    library(zoo)
    Sys.setenv( TZ = "GMT" )
    set.seed(42)
    dati <- data.frame( DATAORA = as.POSIXct( "2012-01-01" )
                                  + as.difftime( seq( 0, 365*3*24
                                               ), units="hours" )
                        )
    # terrible simulation of precipitation
    dati$PREC <- 0.1 * trunc( 50 * rbeta( nrow( dati ), 1, 80 ) )
    dati$ym <- as.yearmon( dati$DATAORA )
    # aggregate usually reduces the number of rows given to it
    datim <- aggregate( list( PREC = dati$PREC ) # data to summarize
                        , dati[ , "ym", drop=FALSE ] # columns to group on
                        , FUN = sum  # calculation on data
                        )
    plot(PREC ~ ym, data=datim) # This is how I would usually look at it
    as.year <- function(x) floor( as.numeric( x ) ) # from help file on
    as.yearmon
    datim$y <- as.year( datim$ym )
    # ave typically does not change the number of rows given to it
    datim$PMES <- ave( datim$PREC, datim$y, FUN = cumsum)
    plot(PMES ~ ym, data=datim) # My guess as to what you asked for?
    ###############

    On Sun, 27 Jan 2019, Diego Avesani wrote:

     > Dear  Jeff, Dear Rui, Dear all,
     >
     > I will try Rui's solution as soon as possible.
     > If I could ask:
     > As a first step, I would like to follow Jeff's suggestion. I will
    represent the precipitation data with a cumulative
     > distribution, one for each year.
     > This follow that I would like to select the starting date and the
    ending date properly form dati$DATA in order to
     > perform the cumulative function.
     >
     > Could you help me on that.
     >
     > Again, really really thanks
     >
     > Diego
     >
     >
     >
     > On Sun, 27 Jan 2019 at 21:37, Jeff Newmiller
    <jdnew...@dcn.davis.ca.us <mailto:jdnew...@dcn.davis.ca.us>> wrote:
     >       Very succinct, Rui!
     >
     >       One warning to Diego.... automatic data recorders tend to
    use the local standard timezone year-round. R by
     >       default assumes that timestamps converted from character to
    POSIXct using the current timezone on your
     >       computer... which may not be in the same zone that the
    logger was in but even more commonly the computer
     >       follows daylight savings time. This leads to NAs showing up
    in your converted timestamps in spring and
     >       duplicated values in autumn as the data are misinterpreted.
    The easiest solution can be to use
     >
     >       Sys.setenv( TZ="GMT" )
     >
     >       though if you need the actual timezone you can use a zone
    name of the form "Etc/GMT+5" (5 hrs west of GMT).
     >
     >       Note that Rui's solution will only work correctly near the
    month transition if you pretend the data timezone
     >       is GMT or UTC. (Technically these are different so your
    mileage may vary but most implementations treat them
     >       as identical and I have not encountered any cases where
    they differ.)
     >
     >       On January 27, 2019 10:03:44 AM PST, Rui Barradas
    <ruipbarra...@sapo.pt <mailto:ruipbarra...@sapo.pt>> wrote:
     >       >Hello,
     >       >
     >       >See if the following can get you started.
     >       >It uses package CRAN zoo, function as.yearmon.
     >       >
     >       >dati$MES <- zoo::as.yearmon(dati$DATAORA)
     >       >PMES <- ave(dati$PREC, dati$MES, FUN = cumsum)
     >       >
     >       >plot(dati$DATAORA, PMES)
     >       >
     >       >
     >       >Hope this helps,
     >       >
     >       >Rui Barradas
     >       >
     >       >?s 15:25 de 27/01/2019, Diego Avesani escreveu:
     >       >> Dear all,
     >       >>
     >       >> I have a set of data with has hourly value:
     >       >>
     >       >> # ID
     >       >> # Lo
     >       >> # L
     >       >> # Q
     >       >> Time,    T, RH,PSFC,DIR,VEL10, PREC, RAD, CC,FOG
     >       >> yyyy-mm-dd hh:mm,   ?C,  %, hPa, ?N,  m/s, mm/h,W/m?,  %,-
     >       >> 2012-01-01 06:00, -0.1,100, 815,313,  2.6,  0.0,   0,  0,0
     >       >> 2012-01-01 07:00, -1.2, 93, 814,314,  4.8,  0.0,   0,  0,0
     >       >> 2012-01-01 08:00,  1.7, 68, 815,308,  7.5,  0.0,  41, 11,0
     >       >> 2012-01-01 09:00,  2.4, 65, 815,308,  7.4,  0.0, 150, 33,0
     >       >> .....
     >       >> .....
     >       >>
     >       >> I was able to read it,  create my-own data frame and to
    plot the
     >       >total
     >       >> cumulative function.
     >       >> This is basically what I have done:
     >       >>
     >       >> dati <- read.csv(file="116.txt", header=FALSE, sep="," ,
     >       >> na.strings="-999",skip = 6)
     >       >> colnames(dati)=c("DATAORA","T",
    "RH","PSFC","DIR","VEL10", "PREC",
     >       >"RAD",
     >       >> "CC","FOG")
     >       >>
     >       >>
    dati$DATAORA<-as.POSIXct(strptime(dati$DATAORA,format="%Y-%m-%d
     >       >%H:%M"))
     >       >>
     >       >>
     >       >> P <- cumsum(dati$PREC)
     >       >> plot(dati$DATAORA, P)
     >       >>
     >       >> I would like to select the data according to an starting
    and ending
     >       >date.
     >       >> In addition, I would like to plot the monthly and not
    the total one.
     >       >> I mean, I would like to have a cumulative plot for each
    month of the
     >       >> selected year.
     >       >>
     >       >> I am struggling with "ddply" but probably it is the
    wrong way.
     >       >>
     >       >> Could someone help me?  Really Really thanks,
     >       >>
     >       >>
     >       >> Diego
     >       >>
     >       >>      [[alternative HTML version deleted]]
     >       >>
     >       >> ______________________________________________
     >       >> R-help@r-project.org <mailto:R-help@r-project.org>
    mailing list -- To UNSUBSCRIBE and more, see
     >       >> 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.
     >       >>
     >       >
     >       >______________________________________________
     >       >R-help@r-project.org <mailto:R-help@r-project.org> mailing
    list -- To UNSUBSCRIBE and more, see
     >       >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.
     >
     >       --
     >       Sent from my phone. Please excuse my brevity.
     >
     >
     >

    ---------------------------------------------------------------------------
    Jeff Newmiller                        The     .....       .....  Go
    Live...
DCN:<jdnew...@dcn.davis.ca.us <mailto:jdnew...@dcn.davis.ca.us>>     Basics: ##.#.       ##.#.  Live Go...                                        Live:   OO#.. Dead: OO#.. Playing
    Research Engineer (Solar/Batteries            O.O#.       #.O#.  with
/Software/Embedded Controllers)               .OO#.       .OO#. rocks...1k
    ---------------------------------------------------------------------------


______________________________________________
R-help@r-project.org mailing list -- To UNSUBSCRIBE and more, see
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.

Reply via email to