df1 <- data.frame(ID = c(1,1,2,2,3,3,4,4,5,5), A = c(1,0,5,1,1,NA,0,3,2,7), B = c(2,3,NA,3,4,NA,1,0,5,NA))
df2 <- data.frame(ID = c(1,2,3,4,5), A = c(1,6,1,3,9), B = c(5,3,4,1,5)) m <- match(df1$ID, df2$ID) sel <- c("A", "B") for (i in 1:nrow(df1)) { df1[i,sel] <- round(df1[i,sel]/df2[m[i],sel], 2) } > df1 ID A B 1 1 1.00 0.4 2 1 0.00 0.6 3 2 0.83 NA 4 2 0.17 1.0 5 3 1.00 1.0 6 3 NA NA 7 4 0.00 1.0 8 4 1.00 0.0 9 5 0.22 1.0 10 5 0.78 NA > -- Best, GG [[alternative HTML version deleted]] ______________________________________________ R-help@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.