【问题标题】:Python or SQL or SAS - How to find similar and equal values in one column and then another columnPython 或 SQL 或 SAS - 如何在一列和另一列中查找相似且相等的值
【发布时间】:2020-11-04 12:31:24
【问题描述】:
| num_A | num_B | name                      | birth_date | id |
|-------|-------|---------------------------|------------|----|
| 1234  | abcd  | M Rita Costa Santos       | 01/01/2000 | 1  |
| 3333  | uvwx  | M Rita Costa Santos       | 01/01/2000 | 1  |
| 5678  | efgh  | Maria Rita C Santos       | 01/01/2000 |    |
| 9101  | ijkl  | Rita Costa Santos         | 01/01/2000 | 1  |
| 1111  | mnop  | Maria Leonor Santos Silva | 02/03/2001 |    |
| 2222  | qrst  | Leonor Santos Silva       | 02/03/2001 | 2  |
| 4444  | yzab  | Leonor Santos Silva       | 30/08/1999 |    |

想象一下,我有这张桌子 1,但规模很大。我想在名称列中找到相似且相等的值,如果它们相似/相等,请转到出生日期列并查看它们是否相等。如果是,请为这种情况创建相同的 id。所以我希望最终输出如表 2 所示:

| num_A | num_B | name                      | birth_date | id |
|-------|-------|---------------------------|------------|----|
| 1234  | abcd  | M Rita Costa Santos       | 01/01/2000 | 1  |
| 3333  | uvwx  | M Rita Costa Santos       | 01/01/2000 | 1  |
| 5678  | efgh  | Maria Rita C Santos       | 01/01/2000 | 1  |
| 9101  | ijkl  | Rita Costa Santos         | 01/01/2000 | 1  |
| 1111  | mnop  | Maria Leonor Santos Silva | 02/03/2001 | 2  |
| 2222  | qrst  | Leonor Santos Silva       | 02/03/2001 | 2  |
| 4444  | yzab  | Leonor Santos Silva       | 30/08/1999 | 3  |

提前谢谢你。

【问题讨论】:

  • 这里的大多数人希望样本表数据和预期结果为格式化文本,而不是图像或图像链接。
  • 这能回答你的问题吗? Getting the closest string match
  • 规模有多大?在 N 个项目(大规模)上使用诸如 COMPGED 之类的昂贵函数来成对比较名称的接近度(相似性)是 O(N^2) 并且需要 n(n-1)/2 比较。如果一个完全相同的名字有多个或不同的生日怎么办?
  • @jarlj 我是新来的,我试图发布一个表格,就像我在另一个网站上所做的那样,但我无法做到。谢谢你:)
  • @Richard 我所说的大规模是指我有近 12 000 条记录。如果一个完全相同的名字有多个或不同的出生日期,它将有一个新的 ID,就像我在最后一条记录中输入的一样 :) 谢谢

标签: python sql sas


【解决方案1】:

我认为 DENSE_RANK() 函数可以解决您的问题。

SELECT
   num_A,
   num_B,
   name,
   birth_date,
   DENSE_RANK() OVER(ORDER BY birth_date) AS rank
FROM Table1

Result from query above

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-06-04
    • 2015-11-16
    • 1970-01-01
    相关资源
    最近更新 更多