全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1087 4
2015-07-14
复制代码
要求每个观察值的第一个作为 baseline, 用第二,三,四  ....,减去第一个,得到一个新变量. 新数据第一个观察值是这样:
obs month p new
1 Jan 0.5
1 Feb 0.4 -0.1(=0.4-0.5)
1 March 0.6 0.1(=0.6-0.5)
1 April 0.3 -0.2(=0.3-0.5)
先谢谢了!








二维码

扫码加我 拉你入群

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

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

全部回复
2015-7-14 09:04:03
不知道是四个一循环还是怎么样啊?第五个数据和第六个数据应该是什么样的
二维码

扫码加我 拉你入群

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

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

2015-7-14 09:45:26
复制代码
by obs notsorted; maybe needed.
二维码

扫码加我 拉你入群

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

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

2015-7-14 12:37:21
data aa;
input obs  month $ p;
cards;
1  Jan   0.5
1  Feb   0.4
1  March 0.6
1  April 0.3
2  Jan  0.2
2  Feb  0.8
2 March  0.4
3 Feb  0.6
3 March 0.8
;
run;


data want;
  set aa;
  by obs;
  retain temp;
  if first.obs then do; temp = p; chazhi=p;end;
    else chazhi = p - temp;
  drop temp;
run;
修改了一下
二维码

扫码加我 拉你入群

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

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

2015-7-16 17:52:44
楼上的程序不健壮,如果第一条record的obs值不是1的话,那就达不到楼主的要求了,
看下我这里的程序,由系统的自动变量_n_来进行处理。
data bb(drop = base);
   retain base;
   set aa;
   if _n_ = 1 then
      base = p;
   else
      p = p - base;
run;
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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