Small tip that I keep forgetting and then can't remember the name of the function again.
Say you have a vector you want to merge into a data.frame, or you want to merge just the one column from a data.frame, using merge() can be a bit cumbersome, and ordering of the original data.frame isn't preserved.
Instead you can use match():
> data <- data.frame( + person = c('george', 'edwina', 'carol', 'edwina'), + day = c(1,2,3,4), + stringsAsFactors = FALSE) > ages <- c(carol = 40, edwina = 33, george = 8) > data$ages <- ages[match(data$person, names(ages))] > data person day ages 1 george 1 8 2 edwina 2 33 3 carol 3 40 4 edwina 4 33 > more <- data.frame( person = c('carol', 'edwina', 'george'), surname = c('roberts', 'smith', 'baker'), stringsAsFactors = FALSE) > data$surname <- more[match(data$person, more$person), 'surname'] > data person day ages surname 1 george 1 8 baker 2 edwina 2 33 smith 3 carol 3 40 roberts 4 edwina 4 33 smith