p***e 发帖数: 118 | 1 如图
怎么在row 对应的位置,
加入这些,"9", "999", "99999" 这些default 的value?
谢谢 | s*********h 发帖数: 6288 | 2 select (TerID);
when (9) ParentID = xxxx;
when (999) ParentID = xxxxx;
....
otherwise;
试试看? | c*****i 发帖数: 1392 | 3 proc sql;
insert into Roster(TerID,ParentID)
values (9,.)
values (999,9)
values (99999,999);
quit;
proc sort Roster;
by TerID;
run; | p***e 发帖数: 118 | 4 en,多谢
问题是如果sort实际的data(和图上的不一样), 9, 999的位置就乱了
最好是自动排到应该的地方, 每个level截至的地方, 而不是通过sort
【在 c*****i 的大作中提到】 : proc sql; : insert into Roster(TerID,ParentID) : values (9,.) : values (999,9) : values (99999,999); : quit; : proc sort Roster; : by TerID; : run;
| c*****i 发帖数: 1392 | 5 那么,你先更清楚地解释一下放9,999,99999的位置rule是什么吧。我以为9放在1位
数TerID中最后一个record后面,999放在3位数TerID中最后一个record后面,......。 | c*****i 发帖数: 1392 | 6 如果你只是想没有任何规律地manually加入一个record到任何你想加的位置,可用
output。
data roster;
set roster;
output;
if TerID=2 then do;
TerID=9;
output;
end;
else if TerID=203 then do;
TerID=999;
ParentID=9;
output;
end;
else if TerID=20342 then do;
TerID=99999;
ParentID=999;
output;
end;
run; | p***e 发帖数: 118 | 7 1位,3位,5位都是不同的level,或group
可能可以用retain last. 来做....
【在 c*****i 的大作中提到】 : 那么,你先更清楚地解释一下放9,999,99999的位置rule是什么吧。我以为9放在1位 : 数TerID中最后一个record后面,999放在3位数TerID中最后一个record后面,......。
| s******8 发帖数: 102 | 8 data youwant;
set yourdata end=last;
if length(strip(put(terid,best32.))) gt length(strip(put(lag(terid),32.)))
then do;
curentterid=terid;
curentparentid=parentid;
curentdesc=desc;
ln=length(strip(put(lag(terid),32.)));
call missing(terid,parentid,desc);
do j= 1 to ln;
terid=sum(terid,9*10**(j-1));
end;
if ln gt 2 then parentid=terid-9*10**(ln-2)-9*10**(ln-1);
output;
terid=curentterid;
parentid=curentparentid;
desc=curentdesc;
output;
end;
else output;
if last then do;
ln=length(strip(put(terid,32.)));
call missing(terid,parentid,desc);
do j= 1 to ln;
terid=sum(terid,9*10**(j-1));
end;
if ln gt 2 then parentid=terid-9*10**(ln-2)-9*10**(ln-1);
output;
end;
drop j curent:;
run; | k*z 发帖数: 4704 | 9 楼上的code复杂了。没有那么复杂的Logic。
楼主就是要插入分割行。直接插入 就可以然后sort.
parent_id + index = terid | p***e 发帖数: 118 | 10 多谢楼上各位
学到了很多
【在 k*z 的大作中提到】 : 楼上的code复杂了。没有那么复杂的Logic。 : 楼主就是要插入分割行。直接插入 就可以然后sort. : parent_id + index = terid
|
|