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")
我有两个数据集,街道地址和公寓号的字符串列重叠但不相同,我想在这两个数据集中创建相同的唯一标识符,然后将它们与该标识符合并。
我的第一直觉是对两个数据集执行此操作然后合并:
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")