[R] How to index the occasions in a vector repeatedly under condition 1? if not, it will give a new index.

PIKAL Petr petr@p|k@| @end|ng |rom prechez@@cz
Fri Feb 21 10:16:57 CET 2020


Hi

If you used diff construction you would not have NA values in beginning

#get rid of NA values
> d[is.na(d)] <- 0
#split d according to a
> d.s <- split(d, a)
# get the result
> lapply(d.s, function(x) cumsum(x>15)+1)
$`1`
[1] 1 1 1 1 1 1 2 3 3

$`2`
[1] 1 1 1 1 1 1 2 3 3
#unlist it
> res <- lapply(d.s, function(x) cumsum(x>15)+1)
> unlist(res)
11 12 13 14 15 16 17 18 19 21 22 23 24 25 26 27 28 29 
 1  1  1  1  1  1  2  3  3  1  1  1  1  1  1  2  3  3 

Cheers
Petr

> -----Original Message-----
> From: R-help <r-help-bounces using r-project.org> On Behalf Of Lijun Zhao
> Sent: Thursday, February 20, 2020 4:21 AM
> To: William Dunlap <wdunlap using tibco.com>
> Cc: r-help using r-project.org
> Subject: Re: [R] How to index the occasions in a vector repeatedly under
> condition 1? if not, it will give a new index.
> 
> Dear William,
> Thank you so much.
> 
> I am quiet new in R. I would like to do this based on another repeated
variables.
> 
> For example:
> a<-c(1,1,1,1,1,1,1,1,1,2,2,2,2,2,2,2,2,2)
> d<-c(NA, 0, 0, 0, 8, 0, 577, 69, 0, NA, 0, 0, 0, 8, 0, 577, 69, 0) the
outcome I
> want is :
> y<-c(1, 1, 1, 1, 1, 1, 2, 3, 3, 1, 1, 1 ,1, 1 ,1, 2, 3, 3)
> 
> Therefore, I would like to create y based on the variable a. once variable
a has
> changed, the index will start from 1 again. I wrote a for loop, but it did
not give
> me what I want. Could you please help me again?
> 
> Thanks in advance,
> 
> Lijun
> 
> 
> 
> From: William Dunlap <wdunlap using tibco.com>
> Sent: Thursday, 20 February 2020 1:53 AM
> To: Lijun Zhao <lijun.zhao using adelaide.edu.au>
> Cc: r-help using r-project.org
> Subject: Re: [R] How to index the occasions in a vector repeatedly under
> condition 1? if not, it will give a new index.
> 
> Use cumsum(logicalVector) to increment a counter at the TRUE positions in
> logicalVector. .  E.g.,
> 
> > d <- c(NA, 0, 0, 0, 8, 0, 577, 69, 0)
> > is_true <- function(x) !is.na<http://is.na>(x) & x
> > 1 + cumsum( is_true(d >= 15) )
> [1] 1 1 1 1 1 1 2 3 3
> 
> Some packages have the equivalent of that is_true function, which maps
FALSE
> and NA to FALSE and TRUE to TRUE.  I don't think core R contains such a
> function.
> 
> Bill Dunlap
> TIBCO Software
> wdunlap tibco.com<http://tibco.com>
> 
> 
> On Wed, Feb 19, 2020 at 7:08 AM Lijun Zhao
> <lijun.zhao using adelaide.edu.au<mailto:lijun.zhao using adelaide.edu.au>> wrote:
> Dear all,
> Could you please help me how to get the output as I described in the
following
> example?
> 
> x<-c(543,  543,  543,  543,  551 , 551 ,1128 ,1197, 1197)
> diff<-x-lag(x)
> diff
> [1]  NA   0   0   0   8   0 577  69   0
> 
> How to index the occasions in x repeatedly if the diff<15? if diff>=15, it
will give
> a new index.
> I want the output be like y.
> 
> y<-c(1,1,1,1,1,1,2,3,3)
> 
> Thank you so much,
> 
> Lijun Zhao (PhD Candidate)
> Nutrition and Metabolism
> Level 7 SAHMRI
> North Terrace
> Adelaide 5005
> Ph    : +61 8 8128 4898
> e-mail:
>
lijun.zhao using adelaide.edu.au<mailto:lijun.zhao using adelaide.edu.au><mailto:lijun.z
> hao using adelaide.edu.au<mailto:lijun.zhao using adelaide.edu.au>> or
> lijun.zhao using sahmri.com<mailto:lijun.zhao using sahmri.com><mailto:lijun.zhao using sa
> hmri.com<mailto:lijun.zhao using sahmri.com>>
> 
> 
> 
>         [[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using r-project.org<mailto:R-help using 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.
> 
> 	[[alternative HTML version deleted]]
> 
> ______________________________________________
> R-help using 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.


More information about the R-help mailing list