Makram Belhaj Fraj
2015-Dec-29 11:26 UTC
[R] need for help for solving operations in a vector
Hi Petr,
I apologize It was my first time using r-help so I didn't know how to
replay to email to all or not,
I am replaying to all for this email,
Many thanks for the code, I am trying to use it,
please find attached the data file in csv,
following are the first lines of code to read the data and calculate qWC1
sdata<-read.csv("almondc_10augv.csv",head=TRUE,sep=",")
tint=sdata$scan #time intervall
mtime=sdata$mtime #measurement time
v1=sdata$vwc1 #value of moisture in percent
qWC1=200*v1 #conversion in mm to get the variable I am working on
On Tue, Dec 29, 2015 at 11:32 AM, PIKAL Petr <petr.pikal at precheza.cz>
wrote:
> Hi
>
>
>
> You shall send your posts to the list, others can answer your questions
> and not only you can benefit from their answers too.
>
>
>
> As you did not post any data it is hard to say what are your issues. I
> believe that there are several values which are the same not only near the
> peak but also at the bottom part. If your data look like I remember and you
> want to keep all values near the peak value regardless they are slightly
> growing or falling, one approach can be to identify peak value, and select
> all values near the peak (the threshold is up to you).
>
>
>
> something like that
>
>
>
> sss<-smooth.spline(temp$theta, temp$int, nknots=length(temp$int)/2)
>
> peak <- which.max(predict(sss)$y)
>
> baseline <- min(predict(sss)$y)
>
> vyska <- predict(sss)$y[peak]
>
> # 50% threshold
>
> HM <- (vyska+baseline)/2
>
> plot(temp$theta, temp$int, col=(temp$int>HM)+1, pch=19)
>
> #10% threshold
>
> HM<-vyska-(vyska*.1)
>
> plot(temp$theta, temp$int, col=(temp$int>HM)+1, pch=19)
>
>
>
> > dput(temp)
>
> structure(list(theta = c(28.995, 29.005, 29.015, 29.025, 29.035,
>
> 29.045, 29.055, 29.065, 29.075, 29.085, 29.095, 29.105, 29.115,
>
> 29.125, 29.135, 29.145, 29.155, 29.165, 29.175, 29.185, 29.195,
>
> 29.205, 29.215, 29.225, 29.235, 29.245, 29.255, 29.265, 29.275,
>
> 29.285, 29.295, 29.305, 29.315, 29.325, 29.335, 29.345, 29.355,
>
> 29.365, 29.375, 29.385, 29.395, 29.405, 29.415, 29.425, 29.435,
>
> 29.445, 29.455, 29.465, 29.475, 29.485, 29.495, 29.505, 29.515,
>
> 29.525, 29.535, 29.545, 29.555, 29.565, 29.575, 29.585, 29.595,
>
> 29.605, 29.615, 29.625, 29.635, 29.645, 29.655, 29.665, 29.675,
>
> 29.685, 29.695, 29.705, 29.715, 29.725, 29.735, 29.745, 29.755,
>
> 29.765, 29.775, 29.785, 29.795, 29.805, 29.815, 29.825, 29.835,
>
> 29.845, 29.855, 29.865, 29.875, 29.885, 29.895, 29.905, 29.915,
>
> 29.925, 29.935, 29.945, 29.955, 29.965, 29.975, 29.985, 29.995
>
> ), int = c(329L, 330L, 318L, 287L, 315L, 344L, 333L, 324L, 334L,
>
> 366L, 339L, 374L, 375L, 335L, 415L, 371L, 413L, 382L, 408L, 406L,
>
> 407L, 440L, 475L, 465L, 516L, 510L, 490L, 550L, 663L, 647L, 628L,
>
> 721L, 789L, 814L, 890L, 923L, 1085L, 1102L, 1222L, 1356L, 1521L,
>
> 1729L, 1868L, 2120L, 2491L, 2656L, 3196L, 3599L, 4128L, 4536L,
>
> 5043L, 5310L, 5638L, 5792L, 5699L, 5374L, 4886L, 4473L, 4293L,
>
> 3757L, 3319L, 2934L, 2422L, 1998L, 1753L, 1397L, 1163L, 972L,
>
> 854L, 775L, 648L, 695L, 616L, 553L, 554L, 509L, 530L, 483L, 482L,
>
> 406L, 451L, 422L, 403L, 393L, 396L, 348L, 367L, 428L, 345L, 384L,
>
> 330L, 342L, 312L, 313L, 323L, 328L, 340L, 322L, 330L, 305L, 311L
>
> )), .Names = c("theta", "int"), row.names = 100:200,
class = "data.frame")
>
> >
>
>
>
> Cheers
>
> Petr
>
>
>
>
>
> *From:* Makram Belhaj Fraj [mailto:belhajfraj.makram at gmail.com]
> *Sent:* Tuesday, December 29, 2015 5:54 AM
> *To:* PIKAL Petr
> *Subject:* Re: [R] need for help for solving operations in a vector
>
>
>
> Hi Petr,
>
> I would like to thank you for your time
>
> i choose the following modification on the plotting so to keep only
> successive equals in red
>
> plot(qWC1, col=(c(0, diff(qWC1))==0 )+1)
>
> then, the red points I want to include in the irrigation period are the 3
> successive red points in the plateau (equal values close to the max)
>
> These points are very important as they are corresponding to saturation,
> we continue to irrigate with the same flow and values remains constant for
> a certain time, so I must add them to irrigation
>
>
>
> up to now I didn't succeed in adding this plateau values to
> theirrigations using the diff(qWC1, lag=1)
>
> however, I wrote also some loops trying to catch all the irrigation and
> recharge separately and I still have some issues,
>
> following are the loops I used, with comments corresponding to the issues
>
> x<-qWC1
>
> length(x)
>
> irrig<-rep(1,61)
>
> for (i in 2:61) {
>
> if (x[i-1]<x[i]){
>
> irrig[i]<-x[i]-x[i-1]
>
> }
>
> }
>
> rech<-rep(1,61)
>
> for (i in 2:61) {
>
> if (x[i-1]>x[i]){
>
> rech[i]<-x[i-1]-x[i]
>
> }
>
> }
>
> plot(x, type = "l", col = "black", ylim = c(min(0),
max(92)))
>
> lines(irrig, type = "l", col = "cornflowerblue", ylim =
c(min(0),
> max(15))) lines(rech, type = "l", col = "brown", ylim =
c(min(0), max(15)))
>
> temp<-irrig<1.000001 #logical command to identify low values into a
> temporary vector temp
>
> temp2<-as.numeric(irrig>1.000001) #logical command to identify high
values
> with 1
>
> temp2
>
> temp3<-as.numeric(rech>1.000001)
>
> temp3
>
> irrig2<-irrig*temp2 #remove values inf 1 mm inirrig
>
> rech2<-rech*temp3 #same for rech
>
> plot(irrig2, type = "l", col = "cornflowerblue", ylim =
c(min(0),
> max(15))) lines(rech2, type = "l", col = "brown", ylim
= c(min(0), max(15)))
>
> Many thanks for your time and intellectual generosity
>
> Cheers
>
> Makram
>
>
>
> On Mon, Dec 28, 2015 at 12:15 PM, PIKAL Petr <petr.pikal at
precheza.cz>
> wrote:
>
> Hi
>
> On top of answers you have got here is some plotting you need to answer
> yourself
>
> plot(qWC1, col=(c(0, diff(qWC1))>=0 )+1)
>
> Which from those red points you want to be included in irrigation period?
> All of them? Only part? Which part?
>
> Based on your figures you probably will not get 100% correct answer.
>
> Cheers
> Petr
>
>
>
> > -----Original Message-----
> > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of
Makram
> > Belhaj Fraj
> > Sent: Wednesday, December 23, 2015 8:35 AM
> > To: r-help at r-project.org; r-help-owner at r-project.org
> > Subject: [R] need for help for solving operations in a vector
> >
>
> > Dear colleagues
> > i need your generous help to solve the following problem
> >
> > I have a soil moisture time series qWC1 (61 values)
> > > qWC1
> > 75.33336 75.20617 75.20617 74.95275 74.95275 74.70059 74.70059
> > 74.70059
> > 74.57498 74.44968 74.32469 74.07563 85.57237 90.40123 90.73760
> > 90.73760 90.73760 90.73760 90.90648 91.07582 91.24564 90.90648
86.82135
> > 80.69793
> > 79.30393 78.62058 78.21484 77.81226 77.67876 77.41279 77.28032
76.88495
> > 76.75383 76.75383 76.49260 76.36249 76.23270 76.23270 76.10325
> > 75.97412
> > 75.84532 75.71685 75.71685 75.71685 75.71685 75.46087 75.46087
> > 75.46087
> > 75.33336 75.20617 75.20617 75.20617 75.20617 75.20617 75.20617
75.07930
> > 75.07930 75.07930 74.95275 74.95275 74.95275
> >
> > I want to measure consecutive increases corresponding to irrigation
and
> > consecutive decreases corresponding to recharge I wrote the following
> > code and it does not calculate for each increment in i?
> > also note that I choose to not use diff command in time series because
> > I want also that "plateaux" corresponding to a minimum of 2
equal
> > consecutive values are accounted as positive differences=irrigations
so
> > when x[i+1]==x[i] the difference y might be equal to the previous
value
> > xi
> >
> > following the code i wrote
> >
> > x<-ts(qWC1,start=1, end=61, frequency=1) x[1] plot(x,
type="h", col > > "green")
> > y<-rep(0,61)
> > for (i in 1:61) {
> > if (x[i+1] > x[i]){
> > y[i]==x[i+1]-x[i]
> > } else if (x[i+1]==x[i]){
> > y[i]=x[i+2]-x[i]
> > } else {
> > y[i]==x[i+1]-x[i]
> > }
> >
> > }
> > plot(y, type="h", col = "blueviolet")
> >
> > Many thank
> > Makram
> >
>
>
>
> ------------------------------
> 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.
>
Makram Belhaj Fraj
2015-Dec-29 11:33 UTC
[R] need for help for solving operations in a vector
Hi Petr I runned the code you gave me as following, and I am adjusting for the threshold as suggested, sss<-smooth.spline(qWC1, tint, nknots=length(tint)/2) peak <- which.max(predict(sss)$y) #qWC1=temp$theta mtime=temp$int baseline <- min(predict(sss)$y) vyska <- predict(sss)$y[peak] # 50% threshold HM <- (vyska+baseline)/2 plot(tint, qWC1,col=(tint>HM)+1, pch=19) #10% threshold HM<-vyska-(vyska*.1) plot(tint,qWC1, col=(tint>HM)+1, pch=19) cheers Makram On Tue, Dec 29, 2015 at 3:26 PM, Makram Belhaj Fraj < belhajfraj.makram at gmail.com> wrote:> Hi Petr, > I apologize It was my first time using r-help so I didn't know how to > replay to email to all or not, > I am replaying to all for this email, > > Many thanks for the code, I am trying to use it, > please find attached the data file in csv, > > following are the first lines of code to read the data and calculate qWC1 > > sdata<-read.csv("almondc_10augv.csv",head=TRUE,sep=",") > > tint=sdata$scan #time intervall > > mtime=sdata$mtime #measurement time > > v1=sdata$vwc1 #value of moisture in percent > > qWC1=200*v1 #conversion in mm to get the variable I am working on > > > > On Tue, Dec 29, 2015 at 11:32 AM, PIKAL Petr <petr.pikal at precheza.cz> > wrote: > >> Hi >> >> >> >> You shall send your posts to the list, others can answer your questions >> and not only you can benefit from their answers too. >> >> >> >> As you did not post any data it is hard to say what are your issues. I >> believe that there are several values which are the same not only near the >> peak but also at the bottom part. If your data look like I remember and you >> want to keep all values near the peak value regardless they are slightly >> growing or falling, one approach can be to identify peak value, and select >> all values near the peak (the threshold is up to you). >> >> >> >> something like that >> >> >> >> sss<-smooth.spline(temp$theta, temp$int, nknots=length(temp$int)/2) >> >> peak <- which.max(predict(sss)$y) >> >> baseline <- min(predict(sss)$y) >> >> vyska <- predict(sss)$y[peak] >> >> # 50% threshold >> >> HM <- (vyska+baseline)/2 >> >> plot(temp$theta, temp$int, col=(temp$int>HM)+1, pch=19) >> >> #10% threshold >> >> HM<-vyska-(vyska*.1) >> >> plot(temp$theta, temp$int, col=(temp$int>HM)+1, pch=19) >> >> >> >> > dput(temp) >> >> structure(list(theta = c(28.995, 29.005, 29.015, 29.025, 29.035, >> >> 29.045, 29.055, 29.065, 29.075, 29.085, 29.095, 29.105, 29.115, >> >> 29.125, 29.135, 29.145, 29.155, 29.165, 29.175, 29.185, 29.195, >> >> 29.205, 29.215, 29.225, 29.235, 29.245, 29.255, 29.265, 29.275, >> >> 29.285, 29.295, 29.305, 29.315, 29.325, 29.335, 29.345, 29.355, >> >> 29.365, 29.375, 29.385, 29.395, 29.405, 29.415, 29.425, 29.435, >> >> 29.445, 29.455, 29.465, 29.475, 29.485, 29.495, 29.505, 29.515, >> >> 29.525, 29.535, 29.545, 29.555, 29.565, 29.575, 29.585, 29.595, >> >> 29.605, 29.615, 29.625, 29.635, 29.645, 29.655, 29.665, 29.675, >> >> 29.685, 29.695, 29.705, 29.715, 29.725, 29.735, 29.745, 29.755, >> >> 29.765, 29.775, 29.785, 29.795, 29.805, 29.815, 29.825, 29.835, >> >> 29.845, 29.855, 29.865, 29.875, 29.885, 29.895, 29.905, 29.915, >> >> 29.925, 29.935, 29.945, 29.955, 29.965, 29.975, 29.985, 29.995 >> >> ), int = c(329L, 330L, 318L, 287L, 315L, 344L, 333L, 324L, 334L, >> >> 366L, 339L, 374L, 375L, 335L, 415L, 371L, 413L, 382L, 408L, 406L, >> >> 407L, 440L, 475L, 465L, 516L, 510L, 490L, 550L, 663L, 647L, 628L, >> >> 721L, 789L, 814L, 890L, 923L, 1085L, 1102L, 1222L, 1356L, 1521L, >> >> 1729L, 1868L, 2120L, 2491L, 2656L, 3196L, 3599L, 4128L, 4536L, >> >> 5043L, 5310L, 5638L, 5792L, 5699L, 5374L, 4886L, 4473L, 4293L, >> >> 3757L, 3319L, 2934L, 2422L, 1998L, 1753L, 1397L, 1163L, 972L, >> >> 854L, 775L, 648L, 695L, 616L, 553L, 554L, 509L, 530L, 483L, 482L, >> >> 406L, 451L, 422L, 403L, 393L, 396L, 348L, 367L, 428L, 345L, 384L, >> >> 330L, 342L, 312L, 313L, 323L, 328L, 340L, 322L, 330L, 305L, 311L >> >> )), .Names = c("theta", "int"), row.names = 100:200, class = "data.frame") >> >> > >> >> >> >> Cheers >> >> Petr >> >> >> >> >> >> *From:* Makram Belhaj Fraj [mailto:belhajfraj.makram at gmail.com] >> *Sent:* Tuesday, December 29, 2015 5:54 AM >> *To:* PIKAL Petr >> *Subject:* Re: [R] need for help for solving operations in a vector >> >> >> >> Hi Petr, >> >> I would like to thank you for your time >> >> i choose the following modification on the plotting so to keep only >> successive equals in red >> >> plot(qWC1, col=(c(0, diff(qWC1))==0 )+1) >> >> then, the red points I want to include in the irrigation period are the 3 >> successive red points in the plateau (equal values close to the max) >> >> These points are very important as they are corresponding to saturation, >> we continue to irrigate with the same flow and values remains constant for >> a certain time, so I must add them to irrigation >> >> >> >> up to now I didn't succeed in adding this plateau values to >> theirrigations using the diff(qWC1, lag=1) >> >> however, I wrote also some loops trying to catch all the irrigation and >> recharge separately and I still have some issues, >> >> following are the loops I used, with comments corresponding to the issues >> >> x<-qWC1 >> >> length(x) >> >> irrig<-rep(1,61) >> >> for (i in 2:61) { >> >> if (x[i-1]<x[i]){ >> >> irrig[i]<-x[i]-x[i-1] >> >> } >> >> } >> >> rech<-rep(1,61) >> >> for (i in 2:61) { >> >> if (x[i-1]>x[i]){ >> >> rech[i]<-x[i-1]-x[i] >> >> } >> >> } >> >> plot(x, type = "l", col = "black", ylim = c(min(0), max(92))) >> >> lines(irrig, type = "l", col = "cornflowerblue", ylim = c(min(0), >> max(15))) lines(rech, type = "l", col = "brown", ylim = c(min(0), max(15))) >> >> temp<-irrig<1.000001 #logical command to identify low values into a >> temporary vector temp >> >> temp2<-as.numeric(irrig>1.000001) #logical command to identify high >> values with 1 >> >> temp2 >> >> temp3<-as.numeric(rech>1.000001) >> >> temp3 >> >> irrig2<-irrig*temp2 #remove values inf 1 mm inirrig >> >> rech2<-rech*temp3 #same for rech >> >> plot(irrig2, type = "l", col = "cornflowerblue", ylim = c(min(0), >> max(15))) lines(rech2, type = "l", col = "brown", ylim = c(min(0), max(15))) >> >> Many thanks for your time and intellectual generosity >> >> Cheers >> >> Makram >> >> >> >> On Mon, Dec 28, 2015 at 12:15 PM, PIKAL Petr <petr.pikal at precheza.cz> >> wrote: >> >> Hi >> >> On top of answers you have got here is some plotting you need to answer >> yourself >> >> plot(qWC1, col=(c(0, diff(qWC1))>=0 )+1) >> >> Which from those red points you want to be included in irrigation period? >> All of them? Only part? Which part? >> >> Based on your figures you probably will not get 100% correct answer. >> >> Cheers >> Petr >> >> >> >> > -----Original Message----- >> > From: R-help [mailto:r-help-bounces at r-project.org] On Behalf Of Makram >> > Belhaj Fraj >> > Sent: Wednesday, December 23, 2015 8:35 AM >> > To: r-help at r-project.org; r-help-owner at r-project.org >> > Subject: [R] need for help for solving operations in a vector >> > >> >> > Dear colleagues >> > i need your generous help to solve the following problem >> > >> > I have a soil moisture time series qWC1 (61 values) >> > > qWC1 >> > 75.33336 75.20617 75.20617 74.95275 74.95275 74.70059 74.70059 >> > 74.70059 >> > 74.57498 74.44968 74.32469 74.07563 85.57237 90.40123 90.73760 >> > 90.73760 90.73760 90.73760 90.90648 91.07582 91.24564 90.90648 86.82135 >> > 80.69793 >> > 79.30393 78.62058 78.21484 77.81226 77.67876 77.41279 77.28032 76.88495 >> > 76.75383 76.75383 76.49260 76.36249 76.23270 76.23270 76.10325 >> > 75.97412 >> > 75.84532 75.71685 75.71685 75.71685 75.71685 75.46087 75.46087 >> > 75.46087 >> > 75.33336 75.20617 75.20617 75.20617 75.20617 75.20617 75.20617 75.07930 >> > 75.07930 75.07930 74.95275 74.95275 74.95275 >> > >> > I want to measure consecutive increases corresponding to irrigation and >> > consecutive decreases corresponding to recharge I wrote the following >> > code and it does not calculate for each increment in i? >> > also note that I choose to not use diff command in time series because >> > I want also that "plateaux" corresponding to a minimum of 2 equal >> > consecutive values are accounted as positive differences=irrigations so >> > when x[i+1]==x[i] the difference y might be equal to the previous value >> > xi >> > >> > following the code i wrote >> > >> > x<-ts(qWC1,start=1, end=61, frequency=1) x[1] plot(x, type="h", col >> > "green") >> > y<-rep(0,61) >> > for (i in 1:61) { >> > if (x[i+1] > x[i]){ >> > y[i]==x[i+1]-x[i] >> > } else if (x[i+1]==x[i]){ >> > y[i]=x[i+2]-x[i] >> > } else { >> > y[i]==x[i+1]-x[i] >> > } >> > >> > } >> > plot(y, type="h", col = "blueviolet") >> > >> > Many thank >> > Makram >> > >> >> >> >> ------------------------------ >> 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. >> > >[[alternative HTML version deleted]]
Hi
First you shall adjust your mail client to send post in plain text not HTML, as
suggested by Posting guide. It shall be available in gmail too.
Second you do not run my code:-(
You run **your** code which is (slightly) **similar** to the code I sent you
however it is completely wrong. If you do not understand what each function is
doing you shall consult its help page. ?smooth.spline, ?predict, ?which.max, ...
With your data
plot(tint, qWC1)
sss<-smooth.spline(tint,qWC1)
lines(predict(sss))
peak <- which.max(predict(sss)$y)
abline(v=tint[peak], col=2)
baseline <- min(predict(sss)$y)
vyska <- predict(sss)$y[peak]
HM <- (vyska+baseline)/2
abline(h=HM)
plot(tint, qWC1,col=(qWC1>HM)+1, pch=19)
HM<-vyska-(vyska*.1)
plot(tint, qWC1,col=(qWC1>HM)+1, pch=19)
HM<-vyska-(vyska*.05)
plot(tint, qWC1,col=(qWC1>HM)+1, pch=19)
HM<-vyska-(vyska*.02)
plot(tint, qWC1,col=(qWC1>HM)+1, pch=19)
You can see which values are considered as belonging to the peak when you are
changing the threshold.
However this simple approach works only if you have only one peak in your data.
Cheers
Petr
From: Makram Belhaj Fraj [mailto:belhajfraj.makram at gmail.com]
Sent: Tuesday, December 29, 2015 12:33 PM
To: PIKAL Petr
Cc: r-help at r-project.org
Subject: Re: [R] need for help for solving operations in a vector
Hi Petr
I runned the code you gave me as following, and I am adjusting for the threshold
as suggested,
sss<-smooth.spline(qWC1, tint, nknots=length(tint)/2)
peak <- which.max(predict(sss)$y) #qWC1=temp$theta mtime=temp$int
baseline <- min(predict(sss)$y)
vyska <- predict(sss)$y[peak]
# 50% threshold
HM <- (vyska+baseline)/2
plot(tint, qWC1,col=(tint>HM)+1, pch=19) #10% threshold
HM<-vyska-(vyska*.1)
plot(tint,qWC1, col=(tint>HM)+1, pch=19)
cheers
Makram
On Tue, Dec 29, 2015 at 3:26 PM, Makram Belhaj Fraj <belhajfraj.makram at
gmail.com<mailto:belhajfraj.makram at gmail.com>> wrote:
Hi Petr,
I apologize It was my first time using r-help so I didn't know how to replay
to email to all or not,
I am replaying to all for this email,
Many thanks for the code, I am trying to use it,
please find attached the data file in csv,
following are the first lines of code to read the data and calculate qWC1
sdata<-read.csv("almondc_10augv.csv",head=TRUE,sep=",")
tint=sdata$scan #time intervall
mtime=sdata$mtime #measurement time
v1=sdata$vwc1 #value of moisture in percent
qWC1=200*v1 #conversion in mm to get the variable I am working on
On Tue, Dec 29, 2015 at 11:32 AM, PIKAL Petr <petr.pikal at
precheza.cz<mailto:petr.pikal at precheza.cz>> wrote:
Hi
You shall send your posts to the list, others can answer your questions and not
only you can benefit from their answers too.
As you did not post any data it is hard to say what are your issues. I believe
that there are several values which are the same not only near the peak but also
at the bottom part. If your data look like I remember and you want to keep all
values near the peak value regardless they are slightly growing or falling, one
approach can be to identify peak value, and select all values near the peak (the
threshold is up to you).
something like that
sss<-smooth.spline(temp$theta, temp$int, nknots=length(temp$int)/2)
peak <- which.max(predict(sss)$y)
baseline <- min(predict(sss)$y)
vyska <- predict(sss)$y[peak]
# 50% threshold
HM <- (vyska+baseline)/2
plot(temp$theta, temp$int, col=(temp$int>HM)+1, pch=19)
#10% threshold
HM<-vyska-(vyska*.1)
plot(temp$theta, temp$int, col=(temp$int>HM)+1, pch=19)
> dput(temp)
structure(list(theta = c(28.995, 29.005, 29.015, 29.025, 29.035,
29.045, 29.055, 29.065, 29.075, 29.085, 29.095, 29.105, 29.115,
29.125, 29.135, 29.145, 29.155, 29.165, 29.175, 29.185, 29.195,
29.205, 29.215, 29.225, 29.235, 29.245, 29.255, 29.265, 29.275,
29.285, 29.295, 29.305, 29.315, 29.325, 29.335, 29.345, 29.355,
29.365, 29.375, 29.385, 29.395, 29.405, 29.415, 29.425, 29.435,
29.445, 29.455, 29.465, 29.475, 29.485, 29.495, 29.505, 29.515,
29.525, 29.535, 29.545, 29.555, 29.565, 29.575, 29.585, 29.595,
29.605, 29.615, 29.625, 29.635, 29.645, 29.655, 29.665, 29.675,
29.685, 29.695, 29.705, 29.715, 29.725, 29.735, 29.745, 29.755,
29.765, 29.775, 29.785, 29.795, 29.805, 29.815, 29.825, 29.835,
29.845, 29.855, 29.865, 29.875, 29.885, 29.895, 29.905, 29.915,
29.925, 29.935, 29.945, 29.955, 29.965, 29.975, 29.985, 29.995
), int = c(329L, 330L, 318L, 287L, 315L, 344L, 333L, 324L, 334L,
366L, 339L, 374L, 375L, 335L, 415L, 371L, 413L, 382L, 408L, 406L,
407L, 440L, 475L, 465L, 516L, 510L, 490L, 550L, 663L, 647L, 628L,
721L, 789L, 814L, 890L, 923L, 1085L, 1102L, 1222L, 1356L, 1521L,
1729L, 1868L, 2120L, 2491L, 2656L, 3196L, 3599L, 4128L, 4536L,
5043L, 5310L, 5638L, 5792L, 5699L, 5374L, 4886L, 4473L, 4293L,
3757L, 3319L, 2934L, 2422L, 1998L, 1753L, 1397L, 1163L, 972L,
854L, 775L, 648L, 695L, 616L, 553L, 554L, 509L, 530L, 483L, 482L,
406L, 451L, 422L, 403L, 393L, 396L, 348L, 367L, 428L, 345L, 384L,
330L, 342L, 312L, 313L, 323L, 328L, 340L, 322L, 330L, 305L, 311L
)), .Names = c("theta", "int"), row.names = 100:200, class =
"data.frame")>
Cheers
Petr
From: Makram Belhaj Fraj [mailto:belhajfraj.makram at
gmail.com<mailto:belhajfraj.makram at gmail.com>]
Sent: Tuesday, December 29, 2015 5:54 AM
To: PIKAL Petr
Subject: Re: [R] need for help for solving operations in a vector
Hi Petr,
I would like to thank you for your time
i choose the following modification on the plotting so to keep only successive
equals in red
plot(qWC1, col=(c(0, diff(qWC1))==0 )+1)
then, the red points I want to include in the irrigation period are the 3
successive red points in the plateau (equal values close to the max)
These points are very important as they are corresponding to saturation, we
continue to irrigate with the same flow and values remains constant for a
certain time, so I must add them to irrigation
up to now I didn't succeed in adding this plateau values to theirrigations
using the diff(qWC1, lag=1)
however, I wrote also some loops trying to catch all the irrigation and recharge
separately and I still have some issues,
following are the loops I used, with comments corresponding to the issues
x<-qWC1
length(x)
irrig<-rep(1,61)
for (i in 2:61) {
if (x[i-1]<x[i]){
irrig[i]<-x[i]-x[i-1]
}
}
rech<-rep(1,61)
for (i in 2:61) {
if (x[i-1]>x[i]){
rech[i]<-x[i-1]-x[i]
}
}
plot(x, type = "l", col = "black", ylim = c(min(0),
max(92)))
lines(irrig, type = "l", col = "cornflowerblue", ylim =
c(min(0), max(15))) lines(rech, type = "l", col = "brown",
ylim = c(min(0), max(15)))
temp<-irrig<1.000001 #logical command to identify low values into a
temporary vector temp
temp2<-as.numeric(irrig>1.000001) #logical command to identify high values
with 1
temp2
temp3<-as.numeric(rech>1.000001)
temp3
irrig2<-irrig*temp2 #remove values inf 1 mm inirrig
rech2<-rech*temp3 #same for rech
plot(irrig2, type = "l", col = "cornflowerblue", ylim =
c(min(0), max(15))) lines(rech2, type = "l", col = "brown",
ylim = c(min(0), max(15)))
Many thanks for your time and intellectual generosity
Cheers
Makram
On Mon, Dec 28, 2015 at 12:15 PM, PIKAL Petr <petr.pikal at
precheza.cz<mailto:petr.pikal at precheza.cz>> wrote:
Hi
On top of answers you have got here is some plotting you need to answer yourself
plot(qWC1, col=(c(0, diff(qWC1))>=0 )+1)
Which from those red points you want to be included in irrigation period? All of
them? Only part? Which part?
Based on your figures you probably will not get 100% correct answer.
Cheers
Petr
> -----Original Message-----
> From: R-help [mailto:r-help-bounces at
r-project.org<mailto:r-help-bounces at r-project.org>] On Behalf Of Makram
> Belhaj Fraj
> Sent: Wednesday, December 23, 2015 8:35 AM
> To: r-help at r-project.org<mailto:r-help at r-project.org>;
r-help-owner at r-project.org<mailto:r-help-owner at r-project.org>
> Subject: [R] need for help for solving operations in a vector
>
> Dear colleagues
> i need your generous help to solve the following problem
>
> I have a soil moisture time series qWC1 (61 values)
> > qWC1
> 75.33336 75.20617 75.20617 74.95275 74.95275 74.70059 74.70059
> 74.70059
> 74.57498 74.44968 74.32469 74.07563 85.57237 90.40123 90.73760
> 90.73760 90.73760 90.73760 90.90648 91.07582 91.24564 90.90648 86.82135
> 80.69793
> 79.30393 78.62058 78.21484 77.81226 77.67876 77.41279 77.28032 76.88495
> 76.75383 76.75383 76.49260 76.36249 76.23270 76.23270 76.10325
> 75.97412
> 75.84532 75.71685 75.71685 75.71685 75.71685 75.46087 75.46087
> 75.46087
> 75.33336 75.20617 75.20617 75.20617 75.20617 75.20617 75.20617 75.07930
> 75.07930 75.07930 74.95275 74.95275 74.95275
>
> I want to measure consecutive increases corresponding to irrigation and
> consecutive decreases corresponding to recharge I wrote the following
> code and it does not calculate for each increment in i?
> also note that I choose to not use diff command in time series because
> I want also that "plateaux" corresponding to a minimum of 2
equal
> consecutive values are accounted as positive differences=irrigations so
> when x[i+1]==x[i] the difference y might be equal to the previous value
> xi
>
> following the code i wrote
>
> x<-ts(qWC1,start=1, end=61, frequency=1) x[1] plot(x,
type="h", col > "green")
> y<-rep(0,61)
> for (i in 1:61) {
> if (x[i+1] > x[i]){
> y[i]==x[i+1]-x[i]
> } else if (x[i+1]==x[i]){
> y[i]=x[i+2]-x[i]
> } else {
> y[i]==x[i+1]-x[i]
> }
>
> }
> plot(y, type="h", col = "blueviolet")
>
> Many thank
> Makram
>
________________________________
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.
[[alternative HTML version deleted]]