ok, looks like distinct and unique can't meet my requirements allowing me to easily pick df columns to exclude from unique. However, I was able to solve this by using row.names(df) to get the id's of rows so I could merge data back into the results of the unique function.