The package data.tableprovides a very fast method duplicatedand uniqueto data.tables. It also has an argument by=where you can provide columns by which duplicate / unique results should be calculated.
data.frame:
require(data.table)
set.seed(45L)
dat <- data.table(var1=sample(100, 1e7, TRUE),
var2=sample(letters, 1e7, TRUE),
var3=sample(as.numeric(sample(c(-100:100, NA), 1e7,TRUE))))
system.time(any(duplicated(dat)))
25 , anyDuplicated.data.frame.
system.time(any(duplicated(dat, by=c("var1", "var2"))))
7.4 , anyDuplicated.data.frame.