全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2592 7
2015-04-06
悬赏 10 个论坛币 已解决
data test;input date price;
cards;
2013 12
2014 10
2015 9
2016 10
2017 6
2018 11
2019 10
2020 8
2021 9
;
run;
随便举个例子,问题很简单。比如我现在找出了所有价格等于10的观测纪录,现在目的在于找出这些观测的下一个date观测纪录,该用什么函数?请大神们赐教!





最佳答案

jl60156 查看完整内容

data want; _n_ ++ 1; if _n_
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

全部回复
2015-4-6 11:31:03
data want;
_n_ ++ 1;
if _n_ <= n then do;
set test point=_n_;
next_date = date;
end;
set test nobs = n;
if price ne 10 then next_date=.;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-6 15:46:41
jl60156 发表于 2015-4-6 12:17
data want;
_n_ ++ 1;
if _n_
好的这步懂了,但如果下一个date的price为缺失值. 时,想继续寻找直到下一个price的值不是缺失值的date,这一步如何做呢?eg。
data test;                                                                                                                              
input date price;                                                                                                                       
cards;                                                                                                                                 
1991 23                                                                                                                                 
1992 10                                                                                                                                 
1993 11                                                                                                                                 
1994 10                                                                                                                                 
1995 15                                                                                                                                 
1996 10                                                                                                                                 
1997 .                                                                                                                                 
1998 .
1999 12                                                                                                                                 
;                                                                                                                                       
run;


二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-6 20:55:07
fanzai1hao 发表于 2015-4-6 15:46
好的这步懂了,但如果下一个date的price为缺失值. 时,想继续寻找直到下一个price的值不是缺失值的date, ...
data test1;
        set test;
        if missing(price) then delete;
run;
data want;
_n_ ++ 1;
if _n_ <= n then do;
set test1 point=_n_;
next_date = date;
end;
set test1 nobs = n;
if price ne 10 then next_date=.;
run;
data want;
        merge test want;
        by date price;
run;
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-7 16:20:30
jl60156 发表于 2015-4-6 20:55
data test1;
        set test;
        if missing(price) then delete;
好的,非常感谢~~~~~~~~~
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

2015-4-7 16:29:05
jl60156 发表于 2015-4-6 20:55
data test1;
        set test;
        if missing(price) then delete;
那如果下一个值为10继续跳过,再跳到直到下一个值不为10的观测,该怎么写呢,现在不可能把观测为10的数据都删了吧。。。
二维码

扫码加我 拉你入群

请注明:姓名-公司-职位

以便审核进群资格,未注明则拒绝

点击查看更多内容…
相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群