EM clustering with missing and misspelling data
Convert your key-Value Table to a table in wide format (1 row per person) , then calculate the distance matrix using the Jaccard Distance (which can convert categorical values into numeric values)

library(dummies)
dummy_dat &lt;- dummy.data.frame(my_data)

jaccard_dist &lt;- dist(dummy_dat, method = "binary")

#  Distance Matrix
jaccard_dist