Thanks Petr then using unlist(x1[,2]) I am able to create the vector I need to add to the dataframe. Didn´t think of this approach. Best, JT
> Date: Tue, 4 Sep 2012 04:47:11 -0700 > From: smartpink...@yahoo.com > Subject: Re: [R] Create a function to number each repeated visit or > measurements > To: tintin...@hotmail.com > CC: petr.pi...@precheza.cz; r-help@r-project.org > > Hi, > > May be you can also use ?aggregate(): > x1<-aggregate(x,list(x),function(x) seq_along(x)-1) > # Group.1 x > #1 a 0, 1, 2, 3, 4, 5, 6 > #2 b 0, 1, 2, 3, 4, 5 > #3 c 0, 1, 2, 3, 4, 5, 6, 7, 8 > #4 d 0, 1, 2, 3, 4, 5, 6, 7, 8, 9 > #5 e 0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17 > A.K. > > > > ----- Original Message ----- > From: PIKAL Petr <petr.pi...@precheza.cz> > To: Jon Toledo <tintin...@hotmail.com>; "r-help@r-project.org" > <r-help@r-project.org> > Cc: > Sent: Tuesday, September 4, 2012 7:07 AM > Subject: Re: [R] Create a function to number each repeated visit or > measurements > > Hi > > You did not provided any suitable data. > > x<-sort(sample(letters[1:5], 50, rep=T)) > unlist(lapply(split(x,x), function(x) (1:length(x))-1)) > > gives you a vector of indices from 0 to n for sorted vector x. > > Regards > Petr > > > > -----Original Message----- > > From: r-help-boun...@r-project.org [mailto:r-help-bounces@r- > > project.org] On Behalf Of Jon Toledo > > Sent: Tuesday, September 04, 2012 7:59 AM > > To: r-help@r-project.org > > Subject: [R] Create a function to number each repeated visit or > > measurements > > > > > > Hi dear R list members, > > I am trying to create a numerical variable that tracks the > > visits/entries that a subject has had. For example having a database of > > repeated serial measurements that are ordered by subject and time. So I > > would get a variable that says 0 for baseline visit/measurement, 1 for > > the second etc. > > In my case the unique identifier for each subject is AreaID Will the > > following code I can number the visits as long as I create as many > > lines as visits. > > But there is probably a way of coding a function or maybe there is > > already a function. > > DUP<-rep(0,length(AreaID))DUP[2:length(DUP)]<- > > sapply(2:(length(AreaID),function(x) ifelse(AreaID[x]==AreaID[x- > > 1],1,DUP[x]))DUP[3:length(DUP)]<-sapply(3:( > > length(AreaID),function(x) ifelse(AreaID[x]==AreaID[x-2],2,DUP[x])) > > My Guess was: > > AddLag<-function(x) { DUP<-c(rep(0,length(x))) for (i in > > 1:(max(as.numeric(GraphArtDB$Measure))+2)){ > > DUP[(i+1):length(x)]<-sapply(((i+1):length(x)),function(x) > > ifelse(x[i]==x[x-i],i,DUP[x])) } return(DUP) } > > > > But it didn´t work. > > Any suggestions? > > > > Thanks in advance > > > > J ToledoUPennUSA > > [[alternative HTML version deleted]] > > ______________________________________________ > R-help@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. > [[alternative HTML version deleted]]
______________________________________________ R-help@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.