由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - SAS 的问题... 多谢高手解答
相关主题
用SAS做Bar ChartA SAS question
SAS help...[合集] 请教一个percentile的问题 (SAS)
MySQL语句请教 (转载)问一个简单的SAS问题,多谢
新人报道,兼问SAS data set的问题[合集] 新手首次发贴 SAS 问题急问,谢谢大家的帮助
对应STATA的SAS CODE请教一个SAS数据input的问题
请教一个SAS文件循环生成的小问题SAS问题请教
求助:SAS使用问题(读数据)问个简单的SAS如何找出某个变量最大之所在的行?
请教SAS ODS to Excelone SAS question regarding selecting specific year
相关话题的讨论汇总
话题: terid话题: parentid话题: ln话题: 999话题: output
进入Statistics版参与讨论
1 (共1页)
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

1 (共1页)
进入Statistics版参与讨论
相关主题
one SAS question regarding selecting specific year对应STATA的SAS CODE
问个SAS问题请教一个SAS文件循环生成的小问题
数据结构如下,想用SAS调出有2年以上数据的ID求助:SAS使用问题(读数据)
SAS code help请教SAS ODS to Excel
用SAS做Bar ChartA SAS question
SAS help...[合集] 请教一个percentile的问题 (SAS)
MySQL语句请教 (转载)问一个简单的SAS问题,多谢
新人报道,兼问SAS data set的问题[合集] 新手首次发贴 SAS 问题急问,谢谢大家的帮助
相关话题的讨论汇总
话题: terid话题: parentid话题: ln话题: 999话题: output