Hi Jakob, You can use is.na() to create an index of which rows in column 3 are missing data, and then select these from column 1. Here is a simple example:
dat <- data.frame(V1 = 1:5, V3 = c(1, NA, 3, 4, NA)) dat$new <- dat$V3 my.na <- is.na(dat$V3) dat$new[my.na] <- dat$V1[my.na] dat This should be quite fast. I broke the steps up to be explicit, but you can readily simplify them. HTH, Josh On Wed, Sep 8, 2010 at 11:17 AM, Jakob Hedegaard <jakob.hedega...@agrsci.dk> wrote: > Hi list, > > I have a data frame (m) with 169221 rows and 10 columns and would like to > make a new column containing the content of column 3 but replace the NAs in > column 3 with the data in column 1 (from the same row as the NA in column 3). > Column 1 has data in all rows. > > My first attempt was: > > for (i in 1:169221){ > if (is.na(m[i,3])==TRUE){ > m[i,11] <- as.character(m[i,1])} > else{ > m[i,11] <- as.character(m[i,3])} > } > > Works - but takes too long time. > I would appreciate alternative solutions. > > Best regards, Jakob > > ______________________________________________ > 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. > -- Joshua Wiley Ph.D. Student, Health Psychology University of California, Los Angeles http://www.joshuawiley.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.