今回はATTRIBとRENAMEを同時に使うときに注意するべきポイントについて解説していきます。
SAS日付となっているid1をddMONyyyy形式にして、id4とするケースを仮定します。
結論:ATTRIBはRENAMEの変更先にできないけど、代入先にはできる。
/* attrib_1 */
data data1;
id1="22229"; id2="22229"; id3="22229";
output;
id1="22229"; id2="22229"; id3="22229";
output;
id1="22229"; id2="22229"; id3="22229";
output;
run;
data data2; set data1;
attrib id4 format=date9. ;
rename id1 = id4;
run;



- ATTRIBをRENAMEの変更先にしてしまうとWARNINGとなる。
- さらにid4は定義したはずのddMONyyyy形式になっていない。
/* attrib_2 */
data data1;
id1="22229"; id2="22229"; id3="22229";
output;
id1="22229"; id2="22229"; id3="22229";
output;
id1="22229"; id2="22229"; id3="22229";
output;
run;
data data2; set data1;
attrib id4 format=date9. ;
id4 = id1;
run;


- ATTRIBを代入先にすれば、正常に動く。
- id4は定義したddMONyyyy形式になっている。
/* attrib_3 */
data data1;
id1="22229"; id2="22229"; id3="22229";
output;
id1="22229"; id2="22229"; id3="22229";
output;
id1="22229"; id2="22229"; id3="22229";
output;
run;
data data2; set data1;
attrib id4 format=date9. ;
id4 = id1;
drop id1;
rename id4 = id1;
run;


- ATTRIBを代入先にすれば、正常に動く。
- id4は定義したddMONyyyy形式になっている。
- もともとあったid1をddMONyyyy形式にする場合は、dropとrenameで実現できる。