由买买提看人间百态

boards

本页内容为未名空间相应帖子的节选和存档,一周内的贴子最多显示50字,超过一周显示500字 访问原贴
Statistics版 - 菜鸟的SAS问题,向高手求助
相关主题
填充缺失值 问题请教 (SAS, R, 所用软件不限)help with a sas code
工作中SAS问题 —另一个问题请教!sas 求助,急
请教一个 SAS macroHow to combine overlapped data
请问如何改变 data set's column 位置. 比如name, id 换成id, name.[R问题]how to make matrix from list (or the other way around)
问个SAS 数据处理问题问一个sas改大量的variable name的问题
帮忙看看这段SAS程序[合集] 问个SAS的问题
SAS helpSAS问题
请教:三道SAS BASE题请教SAS变量重命名
相关话题的讨论汇总
话题: order话题: judge话题: yes话题: sas话题: name
进入Statistics版参与讨论
1 (共1页)
j*******j
发帖数: 2
1
我是SAS的初学者,遇到一个问题,对于熟悉SAS的朋友也许很简单,特求助。
Name Order Judge
a 1 No
b 4 No
c
d 3 Yes
读取数据,如果某行缺失Order和Judge,就读取上一行的Order和Judge,如第三行c后缺
失数据,则希望读取c 4 No
向高手求助,非常感谢能出手相助。
g*******y
发帖数: 380
2
Not sure what are you saying?
For your sample data, you want result like:
c 4 No
or
a 1 No
b 4 No
c 4 No
d 3 Yes

【在 j*******j 的大作中提到】
: 我是SAS的初学者,遇到一个问题,对于熟悉SAS的朋友也许很简单,特求助。
: Name Order Judge
: a 1 No
: b 4 No
: c
: d 3 Yes
: 读取数据,如果某行缺失Order和Judge,就读取上一行的Order和Judge,如第三行c后缺
: 失数据,则希望读取c 4 No
: 向高手求助,非常感谢能出手相助。

p*****0
发帖数: 3104
3
you can create an array and use retain statement
it is not easy for a beginner though

【在 j*******j 的大作中提到】
: 我是SAS的初学者,遇到一个问题,对于熟悉SAS的朋友也许很简单,特求助。
: Name Order Judge
: a 1 No
: b 4 No
: c
: d 3 Yes
: 读取数据,如果某行缺失Order和Judge,就读取上一行的Order和Judge,如第三行c后缺
: 失数据,则希望读取c 4 No
: 向高手求助,非常感谢能出手相助。

j*******j
发帖数: 2
4
原始数据是
Name Order Judge
a 1 No
b 4 No
c
d 3 Yes
希望得到
a 1 No
b 4 No
c 4 No
d 3 Yes
就是缺失数据的,retain上一行的数据,问题很菜,谢谢大家能帮助。
w***y
发帖数: 114
5
it isnot easy.
proc sort data=old by name; run;
data new(drop=order judge rename=(judge1=judge order1=order));
set old;
by name;
retain order1 judge1;
if first.name then do;
order1=.;
judge1="";
if not first.name then do;
order1=order;
judge1=judge;
run;
w***y
发帖数: 114
6
Sorry, forget two "end" to closo "do" loop.
y****2
发帖数: 34
7
Hi, you may also try this one. A little bit easier:
data one;
input Name$ 1 Order 3 Judge$ 5-7;
cards;
a 1 No
b 4 No
c
d 3 Yes
;
run;
data two(drop=order judge rename=(order2=Order judge2=Judge));
set one;
retain order2 judge2;
if not missing(order) then order2=order;
if not missing(judge) then judge2=judge;
run;
i*****o
发帖数: 88
8
use lag() function
P****D
发帖数: 11146
9
data one;
input Name$ 1 Order 3 Judge$ 5-7;
cards;
a 1 No
b 4 No
c
d 3 Yes
;
run;
data two(keep=name order judge);
set one;
order1=lag1(order);
judge1=lag1(judge);
if order=. and Judge="" then do;
order=order1;
judge=judge1;
end;
run;

【在 i*****o 的大作中提到】
: use lag() function
s*****n
发帖数: 3416
10
You can try this:
data old;
set old;
obsid=_n_;
run;
data id_good;
set old;
if order ne .;
run;
proc sql;
/*
find out the first previous one with valid value
*/
create table match as
select a.*,max(b.obsid) as replace
from old as a left join id_good as b
on b.obsid group by a.*;
/*
Get the value from previous valid record
*/
create table new as
select a.*,b.order as new_order
from match as a left join old as b
on a.replace=b.obsid;
quit;
data new;
set new;
if order=. then order=new_order

【在 j*******j 的大作中提到】
: 我是SAS的初学者,遇到一个问题,对于熟悉SAS的朋友也许很简单,特求助。
: Name Order Judge
: a 1 No
: b 4 No
: c
: d 3 Yes
: 读取数据,如果某行缺失Order和Judge,就读取上一行的Order和Judge,如第三行c后缺
: 失数据,则希望读取c 4 No
: 向高手求助,非常感谢能出手相助。

1 (共1页)
进入Statistics版参与讨论
相关主题
请教SAS变量重命名问个SAS 数据处理问题
求教proc sql 问题帮忙看看这段SAS程序
[合集] 请教几道adv题SAS help
[合集] 请教:SAS help请教:三道SAS BASE题
填充缺失值 问题请教 (SAS, R, 所用软件不限)help with a sas code
工作中SAS问题 —另一个问题请教!sas 求助,急
请教一个 SAS macroHow to combine overlapped data
请问如何改变 data set's column 位置. 比如name, id 换成id, name.[R问题]how to make matrix from list (or the other way around)
相关话题的讨论汇总
话题: order话题: judge话题: yes话题: sas话题: name