Repeated identifiers can merge records incorrectly unless the policy is explicit.

Program

Play the script to change the duplicate policy and see the resulting action.

duplicate_check.R
policy_index <- 
id <- c("A1", "B2", "A1", "C3")
policy <- c("ignore", "flag", "stop")[policy_index]
duplicate_id <- unique(id[duplicated(id)])
duplicate_count <- length(duplicate_id)
action <- if (duplicate_count == 0) "ok" else policy
label <- paste(action, duplicate_count, sep = ":")
cat(label, "\n", sep = "")
policy_index <- 
id <- c("A1", "B2", "A1", "C3")
policy <- c("ignore", "flag", "stop")[policy_index]
duplicate_id <- unique(id[duplicated(id)])
duplicate_count <- length(duplicate_id)
action <- if (duplicate_count == 0) "ok" else policy
label <- paste(action, duplicate_count, sep = ":")
cat(label, "\n", sep = "")
policy_index <- 
id <- c("A1", "B2", "A1", "C3")
policy <- c("ignore", "flag", "stop")[policy_index]
duplicate_id <- unique(id[duplicated(id)])
duplicate_count <- length(duplicate_id)
action <- if (duplicate_count == 0) "ok" else policy
label <- paste(action, duplicate_count, sep = ":")
cat(label, "\n", sep = "")
identifier An ID column should usually identify one record.
duplicate scan `duplicated(id)` marks repeated IDs after their first appearance.
policy The duplicate policy decides whether to ignore, flag, or stop.