Maybe something like: f <- function(x,y) ifelse(sign(y[x])==-1,return(y[x-1]), return(y[x])) test[,3] <- sapply(seq_along(test[,3]),f,test[,3])
Ravi S. Shankar wrote: > > Hi R, > > I have a dataframe with > dim(test) > [1] 435150 4 > class(test) > [1] "data.frame" > In the third column every time a number with "-" appears I need to > replace with previous value > I am using the following code > s=which(substr(as.character(test[,3]),1,1)=="-") > for(i in 1:length(s)) test[s[i],3] = test[s[i]-1,3] > > Is there a faster way of doing this? > > sessionInfo() > R version 2.5.1 (2007-06-27) > i386-pc-mingw32 > > locale: > LC_COLLATE=English_United States.1252;LC_CTYPE=English_United > States.1252;LC_MONETARY=English_United > States.1252;LC_NUMERIC=C;LC_TIME=English_United States.1252 > > attached base packages: > [1] "stats" "graphics" "grDevices" "utils" "datasets" > "methods" > [7] "base" > Thanks in advance > > > Ravi Shankar S > > > This e-mail may contain confidential and/or privileged i...{{dropped:10}} > > ______________________________________________ > 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. > > -- View this message in context: http://www.nabble.com/Replace-with-previous-value-tp16310560p16323983.html Sent from the R help mailing list archive at Nabble.com. ______________________________________________ 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.