Here's a very SQLish way to do it:
library(dplyr)
df1 <- data.frame(
citizen = c('citizen 1', 'citizen2', 'citizen 3', 'citizen 1'),
national_id = c(1, 2, 3, 1)
)
unique_ids_df <- distinct(df1, national_id)
all_uniques <- inner_join(unique_ids_df, df1, by = 'national_id')