r - 如何在 r 中创建一个唯一的 ID 来消除字符串歧义?

标签 r database

我有一个包含三个变量(州、邮政编码、姓名)的大型数据集。这里有一个小的提取:

zz <- "State Zipcode Name
IL  60693 THISISTHEFIRST  
IL 60693 TISISTHEFIRS    
OH  45271 THISISTHEFIRST  
CA 94085 THISISTHESECOND  
CA 94085 THISISTHESECOND  
CA 94085 THISISTHESECCOND 
SC 29645 THISISTHETHIRD  
SC 29645 THISISTHETHIRD  
SC 29645 THISISTHETHIRD  
SC 29645 THISISTHEFOURTH  
SC 29645 ISISTHEFOURTH"

Data <- read.table(text=zz, header = TRUE)

我需要为以相同州、邮政编码和名称为特征的观察创建一个唯一 ID。然而,有些名称拼写错误,即使它们实际上代表相同的主题(例如 THISISTHEFIRST 与 TISISISTHEFIRS)

我想以这样的方式结束:

State Zipcode Name ID
IL 60693 THISISTHEFIRST 1
IL 60693 TISISTHEFIRS 1
OH 45271 THISISTHEFIRST 2
CA 94085 THISISTHESECOND 3
CA 94085 THISISTHESECOND 3
CA 94085 THISISTHESECCOND 3
WI 53022 THISISTHETHIRD 4
WI 53022 THISISTHETHIRD 4
WI 53022 THISISTHETHIRD 4
SC 29645 THISISTHEFOURTH 5
SC 29645 ISISTHEFOURTH 5

如何快速有效地创建唯一 ID?

最佳答案

您可以使用模糊匹配对 agrep 执行类似的操作。您可以调整编辑距离。

Data$bins <- sapply(Data$Name, function(n)
    paste(as.integer(agrepl(n, Data$Name, max.distance = 2)), collapse=""))
Data$Group <- as.integer(as.factor(Data$bins))

#    State Zipcode             Name        bins Group
# 1     IL   60693   THISISTHEFIRST 11100000000     4
# 2     IL   60693     TISISTHEFIRS 11100000000     4
# 3     OH   45271   THISISTHEFIRST 11100000000     4
# 4     CA   94085  THISISTHESECOND 00011100000     3
# 5     CA   94085  THISISTHESECOND 00011100000     3
# 6     CA   94085 THISISTHESECCOND 00011100000     3
# 7     SC   29645   THISISTHETHIRD 00000011100     2
# 8     SC   29645   THISISTHETHIRD 00000011100     2
# 9     SC   29645   THISISTHETHIRD 00000011100     2
# 10    SC   29645  THISISTHEFOURTH 00000000011     1
# 11    SC   29645    ISISTHEFOURTH 00000000011     1

关于r - 如何在 r 中创建一个唯一的 ID 来消除字符串歧义?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31076079/

相关文章:

javascript - Shiny + JS : Conditional Formatting based on Pivot Values

sql - NULL 值如何影响数据库搜索的性能?

MySql 授予对所有以 <string> 开头的数据库的权限

mysql - 导入 album-mysql 数据库在 Lynda 教程的 phpmyadmin 上收到错误

r - 在 R 中的循环中构建列表 - 获取正确的项目名称

r - 如何 'unlist' data.table 中的一列

R包lda中折叠的吉布斯采样

r - 如何指定使用哪个库中的函数?

sql - 消除具有反转值的列的行

r - Analysis Services 多维数据集的数据整理