r - 对两个变量进行编码以创建跨两个数据集的唯一 ID

r - encode two variables to create a unique ID across two datasets

我有两个数据集,街道地址和公寓号的字符串列重叠但不相同,我想在这两个数据集中创建相同的唯一标识符,然后将它们与该标识符合并。

我的第一直觉是对两个数据集执行此操作然后合并:

df <- unidue(data_set1)
df$unit_id <- 1:nrow(df)
df_final <- merge(data_set1,df)

但是因为这两个数据集的大小不相等,所以我不知所措。我想我必须对街道地址中的字母进行编码并对公寓号进行编码以创建一个 id 但我不知道如何在 R 中这样做。为了简单起见,我假设我所有的地址都是数字

数据集 1

address unit 
1111        
1111    
2111    F
1114    2G
1311    

数据集 2

address unit
1311   
2111    F
1111    6
1114    2G 

我想创建一个唯一的 ID,不是由地址的顺序决定的,而是由它们的内容决定的。

数据集 1

address unit id
1111         3333
1111         3333
2111    F    3334
1114    2G   3335
1311         3336

数据集 2

address unit id
1311         3336
2111    F    3334
1111    6    3337
1114    2G   3335

然后合并为:

address unit id
1111         3333
1111         3333
1111    6    3337
2111    F    3334
1114    2G   3335
1311         3336

我们通过从两个数据集中的 'address' 列获取唯一值来在两个数据集中创建公共值,将其用作 levels 以将 'address' 转换为 factor 然后将其强制为 integer

lvls <- unique(c(df1$address, df2$address))
df1$id <- as.integer(factor(df1$address, levels = lvls)) + 3332
df2$id <- as.integer(factor(df2$address, levels = lvls)) + 3332

之后 merge 'id' 列的两个数据集

merge(df1, df2, all = TRUE, by = "id")