duplicates - 从具有 50 多个变量的 SAS 数据集中创建重复表

标签 duplicates sas

我有一个大型 SAS 数据集(54 个变量和超过 1000 万个观察值)需要加载到 Teradata 中。必须同时出现重复项,并且我的机器未针对 MultiLoad 配置。我想简单地创建一个包含 300,000 个重复项的表,我可以附加到不接受它们的原始负载。我在其他帖子中读到的逻辑似乎适用于只有几个变量的表。是否有另一种方法可以创建一个新表,其中列出了具有所有 54 个变量的相同组合的每个观察值。我试图通过使用 54 个变量的逻辑来避免 proc 排序。查询构建器方法似乎也很低效。谢谢。

最佳答案

使用 proc sort 是一个很好的方法,您只需要创建一个更好的方法来关闭它。

创建一些测试数据。

data have;
  x = 1;
  y = 'a';
  output; 
  output;
  x = 2;
  output;
run;

创建一个新字段,基本上相当于将行中的所有字段附加在一起,然后通过 md5()(散列)算法运行它们。这将为您提供一个漂亮的短字段,该字段将唯一标识该行中所有值的组合。

data temp;
  length hash $16;
  set have;
  hash = md5(cats(of _all_));
run;

现在使用 proc sort 和我们的新哈希字段作为键。将重复的记录输出到名为'want'的表中:

proc sort data=temp nodupkey dupout=want;
  by hash;
run;

关于duplicates - 从具有 50 多个变量的 SAS 数据集中创建重复表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30760618/

相关文章:

python - 如何从 Python 列表中删除重复的字典(带有嵌套的字典)?

python - 合并 2 个 pandas 数据框时的重复

sas - sas如何为数据类型分配内存

sas - 使用 SAS 宏从 Windows 目录通过管道传输文件名列表

objective-c - 检查 NSMutableArray 上是否有重复的 NSString

c# - 查询以检测重复行

sas - 了解 SAS 输出数据集

sql - 是否可以循环遍历整个流程 n 次?

sas - 创建具有三个条件的 Lag 变量

c++ - 如何避免在字符串数组中重复输入?