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> 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>
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 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 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> 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.