【发布时间】:2014-05-03 17:37:24
【问题描述】:
我现在有一个包含两个主要变量的数据集 - Major 和 Major_Code。这些应该匹配 1 到 1,但是我需要修复一些错误,我发现对于 14 个 Major_Code 值,有两个不同的 Majors。这只是由于拼写或标点符号的变化,例如“ed”。和“教育”。它们在这里应该具有相同的值,但没有。
所以我有一张有 7 对的桌子。每对具有相同的 Major_Code 和不同的 Major。如何为每个代码选择一个主要值?我唯一的想法是通过 if-then 语句,但这似乎非常低效。
我发现双倍的值是这样的:
proc freq data=majorslist; 表 Major_Code/out=majorcodedups; 运行;
proc 打印数据=majorcodedups; 其中计数 > 1; 运行;
所以我可以很容易地找到这些观察结果,但无法提取某些值来覆盖另一个观察结果。我已经研究过数组、宏、sql 和转置,但现在这一切都让我有点想不通。
从逻辑上讲,它会这样工作:
从 obs i 到 n,在 obs i 处找到变量 x 的值,在 obs i 处将值输出到变量 y,转到 obs(i+1) 并重复。
【问题讨论】:
-
关键是要确定你想如何选择“Major”的哪个值是正确的。剩下的很简单。
标签: arrays select sas overwrite