追加のレコードではなく、追加の変数で重複したIDレコードに関する情報を保持するフラットファイルを受け取りました。例えばSAS - 変数の内容とバリエーションの比較
、以下のデータセット:あなたが見ることができるように
ResID VarA_1 VarA_2 VarA_3 VarB_1 VarB_2 VarB_3
XAB2 Red Ylw Blu 13 13 13
BGH3 Grn 14
FHT1 Prp 13
、ID「XAB2」に関連したすべての変数が一つのレコードにフラット化された:
ResID VarA VarB
XAB2 Red 13
XAB2 Ylw 13
BGH3 Grn 14
FHT1 Prp 13
XAB2 Blu 13
ガットは、このになりましたしたがって、すべての情報を保持することができますが、データセットは依然として個人レベルのファイルとして扱うことができます。
これはクールです。しかし、今私はdupsの間の不一致を和解する必要があります。
私は現在のように、/それ以外の場合はif文データステップで非常に退屈なのシリーズを書くことを計画:私はDUPのが住んでいる内の変数をフラグが立てられたら
if VarA_2 NE " " and VarA_2 EQ VarA_1 then FLAG_VarA_dup = 0;
else if VarA_2 NE " " and VarA_2 NE VarA_1 then FLAG_VarA_dup = 1;
else if VarA_3 NE " " and VarA_3 EQ VarA_2 then FLAG_VarA_dup = 0;
else if VarA_3 NE " " and VarA_3 NE VarA_2 then FLAG_VarA_dup = 1;
/*...etc. for all VarB occurrences, and all other variables in my very wide DS*/
、その後、私は比較することができます関連する変数を把握し、何を保持するか、より深く掘り下げるかを決定します。しかし、私は助けることはできませんが、これを行うためにははるかにエレガントで効率的な方法があると思います。私はここで事を学ぶのが大好きです。
もっと良い解決策がありますか?
単語の一部が一致しないようにするには、TRANWRD()関数呼び出しの両方の引数に区切り文字を追加する必要があります。 TRANWRD()はその名前にもかかわらず、何の言葉がわからない。 – Tom
@Tomデータの部分的な単語のマッチングが可能な場合は、良い点です。私はあなたがそうしたいと思うならば、その答えの中でそれに対処するつもりはありません、あなた自身の答えで(または上で)自由に感じてください。 – Joe