楼主: dingdang15
1797 2

[ 求助] 一个SAS编程问题~多谢! [推广有奖]

  • 0关注
  • 0粉丝

已卖:20份资源

高中生

22%

还不是VIP/贵宾

-

威望
0
论坛币
283 个
通用积分
0
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
205 点
帖子
16
精华
0
在线时间
23 小时
注册时间
2008-10-3
最后登录
2019-5-15

楼主
dingdang15 发表于 2009-6-21 09:59:31 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

求职就业群
赵安豆老师微信:zhaoandou666

经管之家联合CDA

送您一个全额奖学金名额~ !

感谢您参与论坛问题回答

经管之家送您两个论坛币!

+2 论坛币
嗯就是想实现这么个结果,就是一组数据比如说有一百个观测,这些数据是按日期date排列的,包括不同公司firm的。然后有一个变量是sto.然后我想筛选一下这些数据,就是分别对于每个公司,sto一超过某一个数,就不要这个公司这个观测以后的所有数据。例如,
下面数据中,只要sto大于2,共一组公司内,这个观测以后的数据都不要

date firm sto
1      1      1.1
2      1      1.3
3      1      2.1
4      1      1.1
5      1      2.3
1      2      1.1
2      2      2.1
3      2      1.5

最后结果想是这样
date firm sto
1      1      1.1
2      1      1.3
3      1      2.1
1      2      1.1
2      2      2.1

请问如何通过SAS实现?

是个新手。多谢大牛指教!~
二维码

扫码加我 拉你入群

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

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

关键词:sas编程问题 SAS编程 date FIRM sto SAS

回帖推荐

pchenwei 发表于2楼  查看完整内容

1# dingdang15 proc sql; create table table_b as select firm ,min(date) as mindate from table table_a where sto>2; quit; Data final; merge table_a (in=a) table_b (in=b); by firm; if a and b; if date

本帖被以下文库推荐

沙发
pchenwei 发表于 2009-6-21 22:16:59
1# dingdang15

proc sql;

         create table table_b as select
                    firm
                  ,min(date)                   as mindate
          from table table_a
          where sto>2;
quit;

Data final;
merge table_a (in=a)
           table_b (in=b);
by firm;
if a and b;
if date<=mindate;
run;

我家里没有安装SAS,所以没有测试,以上程序是假设你的数据都是排好序了。如果数据量小的话,也可以用一个SQL写下来。另外的方法,可以用DATA STEP,设置个标记,检测STO个是不是曾经超过2,以及FIRM是不是还是同一个。
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

藤椅
kunkunred 发表于 2009-6-22 10:46:47
Try this code. It works.

data firm;
input date firm sto;
cards;
1      1      1.1
2      1      1.3
3      1      2.1
4      1      1.1
5      1      2.3
1      2      1.10
2      2      2.1
3      2      1.5
;
run;

proc sort data=firm;
by firm date ;
run;

data screen(drop=keep);
set firm;
        by firm;
        retain keep;
        if first.firm then keep=1;
        if sto>2 then keep=0;
        if keep;
run;

您需要登录后才可以回帖 登录 | 我要注册

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-23 23:56