【发布时间】:2019-03-22 22:33:48
【问题描述】:
所以这是我的问题。我有两个数据框。它们的简化版本如下。
df1
ID String
1.1 a
1.1 a
1.1 b
1.1 c
...
1.2 a
1.2 a
1.2 c
1.2 c
...
2.1 a
2.1 n
2.1 o
2.1 o
...
2.2 a
2.2 n
2.2 n
2.2 o
...
3.1 a
3.1 a
3.1 x
3.1 x
...
3.2 a
3.2 x
3.2 a
3.2 x
...
4.1 a
4.1 b
4.1 o
4.1 o
...
4.2 a
4.2 b
4.2 b
4.2 o
假设每个 ID(例如:1.1)有超过 1000 行。另一件需要注意的事情是,在具有相同编号的 ID 的情况下(例如:1.1 和 1.2)非常相似。但彼此并不完全匹配。
df2
string2
a
b
a
c
df2 是一个测试 df。
我想看看哪个 df1 ID 与 df2 最接近。但我有一个非常重要的条件。我想匹配 n 个元素。不是针对另一个的整个数据框。
我的伪代码:
df2-elements-to-match <- df2$string2[1:n] #only the first n elements
group df1 by ID
df1-elements-to-match <- df1$String[1:n of every ID] #only the first n elements of each ID
Output a column with score of how many matches.
Filter df1 to remove ID groups with < m score. #m here could be any number.
Filtered df1 becomes new df1.
n <- n+1
df2-elements-to-match and df1-elements-to-match both slide down to the next n elements. Overlap is optional. (ex: if first was 1:2, then 3:4 or even 2:3 and then 3:4)
Reiterate loop with updated variables
If one ID remains stop loop.
这里的想法是在不必匹配整个测试数据帧的情况下获得预测匹配。
【问题讨论】:
-
你能分享一个预期结果的例子吗?谢谢
-
你能发布代码来为 df1 和 df2 创建一个最小版本吗?这样人们就可以玩弄它了吗?
标签: r string dataframe string-matching