楼主: 一眼瞬间
5790 11

[原创博文] 运算时by group怎么处理? [推广有奖]

  • 0关注
  • 1粉丝

讲师

50%

还不是VIP/贵宾

-

威望
0
论坛币
730 个
通用积分
0.0001
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
903 点
帖子
376
精华
0
在线时间
309 小时
注册时间
2010-3-14
最后登录
2023-8-19

楼主
一眼瞬间 发表于 2010-8-17 10:01:04 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
RT。

需要对variable进行运算。

但是不同的公司,对应不同的时间段。

需要对同一公司的时间序列进行运算。这样的话如果是lag2(var)的时候,该组的第一个值和第一个值都应该是缺失值,怎么才能让运算的时候自动为缺失值呢?

(一个比较直接的方法可能是先全部一起算出来,然后再设为缺失值,用first即可,但是第二个也设为缺失值,就不知道怎么弄了。。。。)

不知道哪位高手能指点下?
二维码

扫码加我 拉你入群

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

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

关键词:Group 怎么处理 Variable First FIRS 时间段

沙发
tracyyang 发表于 2010-8-17 10:15:17
没太明白,把缺失值去掉不行吗?

藤椅
wzw03 发表于 2010-8-17 10:17:43
不 知道的哦
呵呵

板凳
一眼瞬间 发表于 2010-8-17 10:19:41
tracyyang 发表于 2010-8-17 10:15
没太明白,把缺失值去掉不行吗?
就是如果不加条件的话,直接a=lag2(b)的话,这样会把上一组的数据带到这组来。

这样不会产生缺失值。

我的目的就是要让每组前两个数据算出来的新变量为缺失值。因为是lag2,所以每组第一个和第二个不应该有对应的值的。

报纸
pobel 在职认证  发表于 2010-8-17 11:05:41
proc sort data=sashelp.class out=class;
   by sex height;
run;

data wanted;
    set class;
        by sex height;
        lag_H=lag(height);
        if first.sex then call missing(lag_h);
        lag_2h=lag(lag_H);
        if first.sex then call missing(lag_2h);
run;
和谐拯救危机

地板
一眼瞬间 发表于 2010-8-17 14:36:52
5# pobel

谢谢probel。

但是是lag2(b),这样的话,是不是第一个和第二个都要是missing才对?

第二个missing不知道用什么设置呢?

7
pobel 在职认证  发表于 2010-8-17 15:38:52
用两次lag()就相当于lag2()了
proc sort data=sashelp.class out=class;
   by sex height;
run;

data wanted;
    set class;
        by sex height;
        lag_H=lag(height);
        if first.sex then call missing(lag_h);
        lag_2h=lag(lag_H);
        if first.sex then call missing(lag_2h);
        drop lag_h;
run;

变量lag_2h是不是你想要的效果?
和谐拯救危机

8
一眼瞬间 发表于 2010-8-17 16:32:03
pobel 发表于 2010-8-17 15:38
用两次lag()就相当于lag2()了
proc sort data=sashelp.class out=class;
   by sex height;
run;

data wanted;
    set class;
        by sex height;
        lag_H=lag(height);
        if first.sex then call missing(lag_h);
        lag_2h=lag(lag_H);
        if first.sex then call missing(lag_2h);
        drop lag_h;
run;

变量lag_2h是不是你想要的效果?
谢谢ls!!!是我没问清楚,是这样的:
实际variable的运算不是直接lag2(height),而是比较复杂一些: lag_2h=lag(height)/lag2(height),所以没法直接用做两次来弄。

不过按照你提供的办法,还是可以解决问题。就是从新定义一个变量var_new,然后让这组的前两个值都为missing,再

if Var_new=., then lag_2h=.,这样应该可以解决问题?

顺便再问下有没其他的处理方法?

9
pobel 在职认证  发表于 2010-8-17 16:53:42
变量lag_2h 就是lag2(height), 每组的前两个就是missing的。

result=lag_h/lag_2h?
和谐拯救危机

10
一眼瞬间 发表于 2010-8-17 17:16:37
9# pobel

是的,我实际操作中需要算 var=lag(a)/lag2(a)......

为了简化提问我就直接写了个求lag2(a)

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

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