[R] Sum of two consecutive number in dataset.
Frederic Ntirenganya
ntfredo at gmail.com
Sun Oct 19 10:10:50 CEST 2014
Dear All,
Thanks for the useful ideas.
This is how I solved the problem and it works well.
####################################################################################
sowdays=function(data,Year){
Year = unique(data$Year)
#gives you sum of rain in 2 consecutive days
twodays <- rowSums(embed(Samaru56$Rain,2))
# the condition of heavy rainfall
sel <- which(twodays>=20)
#gives you vector of row numbers in which above condition results is TRUE
value
#Samaru56[sel,]
D=Samaru56[sel,]
day<- c()
for (year in 1928: 1983){
S <- subset(D, D$Year == year) #subset each year
for(i in S$Day[S$Day>91]){
if(S[S$Day == i, 3] >= 20){
day[year-(min(Year)-1)] = i
break
}
}
}
day
}
sowdays(Samaru56, Samaru56$Year)
#######################################################################################
I want to make it with the additional condition that there is no 10 day (or
longer) dry
spell in the next 30 days. In definition a 'dry day' is here defined as a
day with less than 0.85 mm of rain.
Any idea of how I can include this condition in the above condition is can
help me alot. Thanks.
Regards,
Fredo.
On Wed, Oct 15, 2014 at 6:34 PM, Jeff Newmiller <jdnewmil at dcn.davis.ca.us>
wrote:
> twodays <- c(filter(x,c(1,1),sides=1))
>
> might be more efficient with memory than the embed approach, which might
> be important if more than two days were of interest.
> ---------------------------------------------------------------------------
> Jeff Newmiller The ..... ..... Go Live...
> DCN:<jdnewmil at 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
> ---------------------------------------------------------------------------
> Sent from my phone. Please excuse my brevity.
>
> On October 15, 2014 2:59:40 AM PDT, PIKAL Petr <petr.pikal at precheza.cz>
> wrote:
> >Hi
> >
> >twodays <- rowSums(embed(Samaru56$Rain,2))
> >
> >gives you sum of rain in 2 cosecutive days
> >
> >sel <- which(twodays>20)
> >
> >gives you vector of row numbers in which above condition results in
> >TRUE value
> >
> >Samaru56[sel,]
> >
> >selects these rows
> >
> >Regards
> >Petr
> >
> >> -----Original Message-----
> >> From: r-help-bounces at r-project.org [mailto:r-help-bounces at r-
> >> project.org] On Behalf Of Frederic Ntirenganya
> >> Sent: Wednesday, October 15, 2014 9:01 AM
> >> To: r-help at r-project.org
> >> Subject: [R] Sum of two consecutive number in dataset.
> >>
> >> Dear All,
> >>
> >> i am solving the following problem in my work.
> >>
> >> The first day from April 01 that gets more than 20 mm on a single
> >day,
> >> or totalled over 2 consecutive days. i.e April 01 = 92th day of the
> >> year.
> >>
> >> The column of interest is "Rain".
> >> > head(Samaru56)
> >> Year Day Rain
> >> 1 1928 1 0
> >> 2 1928 2 0
> >> 3 1928 3 0
> >> 4 1928 4 0
> >> 5 1928 5 0
> >> 6 1928 6 0
> >>
> >> I used the loop below but it is not printing anything.
> >>
> >> sow_day=c()
> >> for (i in 1928:1983){
> >> for (j in 92:366){
> >> k=j-1
> >> s_rain=Samaru56$Rain[k] + Samaru56$Rain[j]
> >> if (s_rain>=20)
> >> sow_day=j
> >> break
> >> }
> >> Samaru56$year=Samaru56$Year[sow_day]
> >> Samaru56$Day=Samaru56$Day[sow_day]
> >> Samaru56$Rain=Samaru56$Rain[sow_day]
> >> }
> >> sow_day
> >>
> >> Any idea is welcome on how I can solve this problem. Thanks
> >>
> >> --
> >> Frederic Ntirenganya
> >> Maseno University,
> >> Kenya.
> >> Mobile:(+254)718492836
> >> Email: fredo at aims.ac.za
> >> https://sites.google.com/a/aims.ac.za/fredo/
> >>
> >> [[alternative HTML version deleted]]
> >>
> >> ______________________________________________
> >> R-help at r-project.org 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.
> >
> >________________________________
> >Tento e-mail a jakékoliv k němu připojené dokumenty jsou důvěrné a jsou
> >určeny pouze jeho adresátům.
> >Jestliže jste obdržel(a) tento e-mail omylem, informujte laskavě
> >neprodleně jeho odesílatele. Obsah tohoto emailu i s přílohami a jeho
> >kopie vymažte ze svého systému.
> >Nejste-li zamýšleným adresátem tohoto emailu, nejste oprávněni tento
> >email jakkoliv užívat, rozšiřovat, kopírovat či zveřejňovat.
> >Odesílatel e-mailu neodpovídá za eventuální škodu způsobenou
> >modifikacemi či zpožděním přenosu e-mailu.
> >
> >V případě, že je tento e-mail součástí obchodního jednání:
> >- vyhrazuje si odesílatel právo ukončit kdykoliv jednání o uzavření
> >smlouvy, a to z jakéhokoliv důvodu i bez uvedení důvodu.
> >- a obsahuje-li nabídku, je adresát oprávněn nabídku bezodkladně
> >přijmout; Odesílatel tohoto e-mailu (nabídky) vylučuje přijetí nabídky
> >ze strany příjemce s dodatkem či odchylkou.
> >- trvá odesílatel na tom, že příslušná smlouva je uzavřena teprve
> >výslovným dosažením shody na všech jejích náležitostech.
> >- odesílatel tohoto emailu informuje, že není oprávněn uzavírat za
> >společnost žádné smlouvy s výjimkou případů, kdy k tomu byl písemně
> >zmocněn nebo písemně pověřen a takové pověření nebo plná moc byly
> >adresátovi tohoto emailu případně osobě, kterou adresát zastupuje,
> >předloženy nebo jejich existence je adresátovi či osobě jím zastoupené
> >známá.
> >
> >This e-mail and any documents attached to it may be confidential and
> >are intended only for its intended recipients.
> >If you received this e-mail by mistake, please immediately inform its
> >sender. Delete the contents of this e-mail with all attachments and its
> >copies from your system.
> >If you are not the intended recipient of this e-mail, you are not
> >authorized to use, disseminate, copy or disclose this e-mail in any
> >manner.
> >The sender of this e-mail shall not be liable for any possible damage
> >caused by modifications of the e-mail or by delay with transfer of the
> >email.
> >
> >In case that this e-mail forms part of business dealings:
> >- the sender reserves the right to end negotiations about entering into
> >a contract in any time, for any reason, and without stating any
> >reasoning.
> >- if the e-mail contains an offer, the recipient is entitled to
> >immediately accept such offer; The sender of this e-mail (offer)
> >excludes any acceptance of the offer on the part of the recipient
> >containing any amendment or variation.
> >- the sender insists on that the respective contract is concluded only
> >upon an express mutual agreement on all its aspects.
> >- the sender of this e-mail informs that he/she is not authorized to
> >enter into any contracts on behalf of the company except for cases in
> >which he/she is expressly authorized to do so in writing, and such
> >authorization or power of attorney is submitted to the recipient or the
> >person represented by the recipient, or the existence of such
> >authorization is known to the recipient of the person represented by
> >the recipient.
> >______________________________________________
> >R-help at r-project.org 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.
>
>
--
Frederic Ntirenganya
Maseno University,
Kenya.
Mobile:(+254)718492836
Email: fredo at aims.ac.za
https://sites.google.com/a/aims.ac.za/fredo/
[[alternative HTML version deleted]]
More information about the R-help
mailing list