楼主: 百草园Tracy
3132 15

数据处理的 的break point [推广有奖]

  • 0关注
  • 0粉丝

硕士生

23%

还不是VIP/贵宾

-

威望
0
论坛币
119 个
通用积分
8.2495
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
2220 点
帖子
106
精华
0
在线时间
91 小时
注册时间
2007-5-18
最后登录
2015-4-12

楼主
百草园Tracy 发表于 2010-3-11 14:58:56 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
数据大概是长这种样子的,有很多个公司,然后每个公司有一定长度的时间序列
时间  公司名称  其他变量
1991 公司A
1992 公司A
1993 公司A
1994 公司A
1991 公司B
1992 公司B
1993 公司B
1994 公司B
1991 公司C
1992 公司C
1993 公司C
1994 公司C

如果要对每个公司的时间序列上的变量进行处理,计算新的变量,比如说一阶差分,lag,怎么样才能按照公司来呢

Data a;
set b;
var1=dif(c)-dif(d) Var2=lag(c);
run;

如果这样运行的话 会把公司的数据混起来,怎么才能按照公司来呢?
二维码

扫码加我 拉你入群

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

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

关键词:break Point 数据处理 bre int 数据处理 Point break 数据分析专题 数据处理 数据分析软件 数据分析报告 面板数据分析 excel数据分析 数据分析方法 项目数据分析

回帖推荐

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

和那个贴子问题一样,试试吧 i是差分阶数......

本帖被以下文库推荐

沙发
soporaeternus 发表于 2010-3-11 15:31:01
  1. data test;
  2.         retain comp year;
  3.         input year comp:$8. ;
  4.         Val=floor(ranuni(123)*100);
  5.         datalines;
  6. 1991 公司A
  7. 1992 公司A
  8. 1993 公司A
  9. 1994 公司A
  10. 1991 公司B
  11. 1992 公司B
  12. 1993 公司B
  13. 1994 公司B
  14. 1991 公司C
  15. 1992 公司C
  16. 1993 公司C
  17. 1994 公司C
  18. ;

  19. run;

  20. proc sort data=test;by comp year;run;quit;

  21. %MACRO T(i);
  22.         data test_&i;
  23.                 set test;
  24.                 by comp year;
  25.                 if first.comp then do;
  26.                         i=0;
  27.                 end;
  28.                 i+1;
  29.                 dif&i=dif&i(Val);
  30.                 if i<=&i then dif&i=.;
  31.                 drop i;
  32.         run;
  33. %MEND T;
  34. %T(1);
  35. %T(2);
  36. %T(3);
复制代码
和那个贴子问题一样,试试吧
i是差分阶数......
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

Let them be hard, but never unjust

藤椅
百草园Tracy 发表于 2010-3-11 15:52:55
谢谢LS大牛!!!!!

板凳
百草园Tracy 发表于 2010-3-12 04:16:53
我弄了下,但是有100多个公司,有没简单的做法呢?

报纸
ping_007 发表于 2010-3-12 12:11:40
1# 百草园Tracy

要么sort好数据后用lag, dif等,然后手工把混起来的数据设为missing(每个公司的第一个,用by 和first.xxx)。

要么直接用ETS中的proc expand

地板
百草园Tracy 发表于 2010-3-12 12:19:58
data a ;
     set b;
if conm=lag(conm) then A2=oancf-lag(oancf);
run;

我用了这样的程序,能基本解决问题。每个公司第一年的刚好是缺失的

但是有个问题,第一个公司有两年的缺失数据,我不知道自己错在哪里了。。。。

大家有高见不?

7
百草园Tracy 发表于 2010-3-12 12:22:29
proc expand能很方便的弄么?

8
bobguy 发表于 2010-3-12 12:32:20
百草园Tracy 发表于 2010-3-11 14:58
数据大概是长这种样子的,有很多个公司,然后每个公司有一定长度的时间序列
时间  公司名称  其他变量
1991 公司A
1992 公司A
1993 公司A
1994 公司A
1991 公司B
1992 公司B
1993 公司B
1994 公司B
1991 公司C
1992 公司C
1993 公司C
1994 公司C

如果要对每个公司的时间序列上的变量进行处理,计算新的变量,比如说一阶差分,lag,怎么样才能按照公司来呢

Data a;
set b;
var1=dif(c)-dif(d) Var2=lag(c);
run;

如果这样运行的话 会把公司的数据混起来,怎么才能按照公司来呢?
Hope this is what you need.

data o;
  do c='a','b','c';
   do year=1994 to 1998;
      n+1;
      output;
   end;
  end;
run;

data o2;
   set o;
   by c;
   diff=dif(n);
   if first.c then diff=.;
run;

proc print; run;

9
百草园Tracy 发表于 2010-3-12 12:46:08
bobguy 发表于 2010-3-12 12:32
百草园Tracy 发表于 2010-3-11 14:58
数据大概是长这种样子的,有很多个公司,然后每个公司有一定长度的时间序列
时间  公司名称  其他变量
1991 公司A
1992 公司A
1993 公司A
1994 公司A
1991 公司B
1992 公司B
1993 公司B
1994 公司B
1991 公司C
1992 公司C
1993 公司C
1994 公司C

如果要对每个公司的时间序列上的变量进行处理,计算新的变量,比如说一阶差分,lag,怎么样才能按照公司来呢

Data a;
set b;
var1=dif(c)-dif(d) Var2=lag(c);
run;

如果这样运行的话 会把公司的数据混起来,怎么才能按照公司来呢?
Hope this is what you need.

data o;
  do c='a','b','c';
   do year=1994 to 1998;
      n+1;
      output;
   end;
  end;
run;

data o2;
   set o;
   by c;
   diff=dif(n);
   if first.c then diff=.;
run;

proc print; run;
我觉得我的这个code 特简单:
data a ;
     set b;
if conm=lag(conm) then A2=oancf-lag(oancf);
run;
我用了这样的程序,能基本解决问题。每个公司第一年的刚好是缺失的(这是正常的)
但是有个问题,第一个公司有两年的缺失数据

不知道问题在哪里,如果能稍微改进一下就完美了

10
soporaeternus 发表于 2010-3-12 12:51:14
lag函数本身的问题...
Let them be hard, but never unjust

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

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