我有一个基本格式的5M记录数据集:
FName LName UniqueID DOB
John Smith 987678 10/08/1976
John Smith 987678 10/08/1976
Mary Martin 567834 2/08/1980
John Smit 987678 10/08/1976
Mary Martin 768987 2/08/1980
DOB始终是唯一的,但我有以下情况: 相同的ID,不同的名称拼写或不同的ID,同名
我让SPSS认识到John Smit和John Smith与同一个DOB是同一个人,我用聚合来显示在名字附近使用拼写的次数(John Smith,10; John Smit 5)。
案例1: 我想做的是循环查找被识别为同一个人的所有记录,并获得该人姓名的最常见拼写,并将其用作他们的标准名称。
案例2: 如果我有同一个人的多个ID,请选择最低的ID并将其作为标准。
我很乐意使用基本语法来清理我的数据,但这是我唯一坚持的事情。
答案 0 :(得分:2)
如果UniqueID
是群体中个体的真实唯一ID,并且您想要找到名称拼写的变体(在这些ID的分组中)并分配模态出现,那么这样的东西将起作用:
STRING FirstLastName (A99).
COMPUTE FirstLastName = CONCAT(FName," ", LName").
AGGREGATE OUTFILE= * MODE=ADDVARIABLES /BREAK=UniqueID FirstLastName /Count=N.
AGGREGATE OUTFILE= * MODE=ADDVARIABLES /BREAK=UniqueID /MaxCount=MAX(Count).
IF (Count<>MaxCount) FirstLastName =$SYSMIS.
AGGREGATE OUTFILE= * MODE=ADDVARIABLES OVERWRITE=YES /BREAK=UniqueID /FirstLastName=MAX(FirstLastName).
您也可以覆盖FName
和LName
字段,但是如果例如FName
或LName
可以包含空格,则必须进行更多假设人物等。
答案 1 :(得分:0)
我最终以一种看似非常复杂的方式解决了所有这些问题。但是,最后,我能够解决所有问题,并且我在最终数据库上做的理智检查都很好。
@Jignesh,我最终使用了你的一些代码。谢谢。