具有中间初始值的凌乱名称变量的SAS数据清理

时间:2015-05-04 19:00:50

标签: sas data-cleaning

我有一个凌乱的数据集,其中包含数百个管理器名称,其中一些具有中间名首字母,一些没有(这会增加唯一管理器名称的数量以及由管理器名称运行的任何分析)。我想尽可能使用最完整的名称并替换较短的名称,即如果管理器名称包含中间名称,它将使用它来替换较短的管理器名称。下面是一个假名称的示例数据集:

data test;
    input project name $50.;
    datalines;
    1   Farmer,Richard
    2   Farmer,Richard L
    3   Farmer,Richard
    4   Farmer,Richard
    5   Farmer,Richard L
    6   Rooney,Douglas
    7   Rowe,Jamie Elaine
    8   Rowe,Jamie
    9   Rowe,Jamie
    10  Rowe,Jamie Elaine
    11  Smith,Mary-Lou
    12  Needs,Mark
    13  Needs,Mark H
    14  Smith,Marie
    ;
run;

因此,我希望将所有Farmer,Richard名称替换为Farmer,Richard L,并将其他名称替换为first.。有一个快速的方法吗?我尝试了last.DQMATCH方法,计算,滞后,似乎无法找到顺畅的清洁方法。 <u> and </u>似乎做了我想要的,但我没有获得许可。有什么见解吗?

1 个答案:

答案 0 :(得分:3)

我发现SAS不太适合处理这种事情。您是否必须在SAS中执行此操作?一些需要考虑的替代方案是:

  • OpenRefine tool(以前称为GoogleRefine,因为它最初是在那里开发的)。开始使用它相当容易,并且在各种数据清理方面非常棒。 old documentation page上有一些不错的介绍性视频。 (您需要做的就是读入您的数据,在名称列上创建&#34;文本方面&#34;然后使用群集算法。希望这将有助于您开始使用。)

  • 如果你可以使用Perl,python或类似的东西,你可以使用&#34; fingerprint&#34;便于匹配的概念。 (OpenRefine使用它作为其基本技术之一,但你可以使用它。)我确信这种方法也可以用SAS编码。为每个姓名指纹后,您可以在指纹足够接近时对其进行分组 - 如果您愿意,可以使用SAS中的complev功能测量距离。