Damien,
You don't give an example of what your data frame looks like or what you
want the new column to look like (given that example data), but I created
an example data frame for z, and wrote a few lines of code to add a new
column. Check it out and see if it comes close to doing what you want.
first <- function(x) c(1, 1-(x[-1]==x[-length(x)]))
n <- 25
z <- data.frame(flagFoehn3_durr=sample(0:2, n, TRUE), Guetsch=sample(0:2,
n, TRUE))
z$newColumn <- cumsum(first(z$flagFoehn3_durr==1) & z$flagFoehn3_durr==1)
z$newColumn[z$flagFoehn3_durr!=1] <- 0
Jean
On Tue, Jan 8, 2013 at 12:33 PM, Damien Pilloud
<damien.pilloud@gmail.com>wrote:
> Dear R-helper,
>
> I am working on a very large data frame and I am trying to add a new column
> and write in it with certain conditions. I have try to use this code with
> the data frame p :
>
> ID = 0
>
> p[,"newColumn"]<-
> ifelse (p$flagFoehn3_durr == 1,
> ifelse(p$Guetsch == 0,
> ID <<- ID ++
> ,
> ID
> )
> ,
> 0
> )
>
> What I am trying to do is to increment the ID when p$Guetsch == 0 and to
> put this result in the column. The problem is that ID does not increment
> itself.
>
> An other way is to use a loop for like this example :
>
> ID = 0
> for (s in 1:(nrow(z))){
>
> z[s,"newColumn"]<-
> if (z$flagFoehn3_durr[s] == 1){
> if(z$flagFoehn3_durr[s-1] == 0){
> ID <<-ID+1
> }else{
> ID
> }
> }else{
> 0
> }
> }
>
> This work perfectly, but the problem is that it will take me more than a
> month to run it.
>
> Is there a way to increment with the first code I used or a way of running
> the second code faster (I have more than 1 million rows)
>
> Thanks!
>
> Cheers,
>
> Damien
>
> [[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]]