【发布时间】:2020-12-17 12:54:35
【问题描述】:
我正在对用户生成的日志数据集进行二次数据分析,我注意到一个用户有 2 个不同的用户标识符;主要区别在于重复的标识符前面多了一个前缀。
这是一个模拟数据框,描述了我的意思:-
UserId<-c("+cbeed1382f", "+f50197eebb", "+c3e6a4cbc9", "+27bc490129",
"+adcadf6cd4", "+e10ca42ce8", "+1744b26118", "+de1e9f6506", "+8aac93c8fd",
"+72bed51a4a", "+6a6c7d444b", "+8636fdc4c7", "+6fa2d04df3", "+d4e9b6cf42",
"+536fa504a2", "+353cbeed1382f", "+353f50197eebb", "+353c3e6a4cbc9",
"+35327bc490129", "+353adcadf6cd4", "+353e10ca42ce8", "+3531744b26118",
"+353de1e9f6506", "+3538aac93c8fd", "+35372bed51a4a", "+3536a6c7d444b",
"+3538636fdc4c7", "+3536fa2d04df3", "+353d4e9b6cf42", "+353536fa504a2")
Value<-c(8995L, 8746L, 9920L, 4765L, 2489L, 4894L, 2486L, 4782L, 5632L,
7784L, 5642L, 3642L, 1123L, 2036L, 2561L, 963L, 562L, 214L, 365L,
785L, 465L, 211L, 111L, 256L, 234L, 895L, 441L, 25L, 698L, 478L)
df<-as.data.frame(cbind(UserId,Value))
View(df)
df
UserId Value
1 +cbeed1382f 8995
2 +f50197eebb 8746
3 +c3e6a4cbc9 9920
4 +27bc490129 4765
5 +adcadf6cd4 2489
6 +e10ca42ce8 4894
7 +1744b26118 2486
8 +de1e9f6506 4782
9 +8aac93c8fd 5632
10 +72bed51a4a 7784
11 +6a6c7d444b 5642
12 +8636fdc4c7 3642
13 +6fa2d04df3 1123
14 +d4e9b6cf42 2036
15 +536fa504a2 2561
16 +353cbeed1382f 963
17 +353f50197eebb 562
18 +353c3e6a4cbc9 214
19 +35327bc490129 365
20 +353adcadf6cd4 785
21 +353e10ca42ce8 465
22 +3531744b26118 211
23 +353de1e9f6506 111
24 +3538aac93c8fd 256
25 +35372bed51a4a 234
26 +3536a6c7d444b 895
27 +3538636fdc4c7 441
28 +3536fa2d04df3 25
29 +353d4e9b6cf42 698
30 +353536fa504a2 478
如您所见,第 1 行中的标识符(“+cbeed1382f”)与第 16 行(“+353cbeed1382f”)中的标识符相同,但没有“+353”前缀,第 2 行与第 17 行相同, 等等。例如,如果我对这种类型的数据进行 k-means 聚类,这可能会出现问题,因为它会将一个用户视为两个用户,从而严重扭曲结果。
我想要做的是匹配这些标识符,如果匹配,将添加额外的前缀(在本例中为“+353”)。有一个警告:一些前缀是 3、4 或 5 位长,不一定以“+353”开头。所以解决方案需要意识到这一点。任何帮助将不胜感激:)
【问题讨论】:
-
每个base id都以字母开头吗?每个前缀是否只包含数字?
-
嗨@BrianLang,每个基本ID都可以以数字或字母开头(前面带有+符号)。
-
啊,我现在明白了。基本 ID 是否有固定数量的字符?
标签: r match fuzzy-comparison