全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
11381 7
2014-09-17
大家好!请教个SAS按定义规则生成新变量问题:数据集jing1有三个变量device_id,time和intensity,如下图
SAS_jing.png
目标是生成新的数据集jing2,在jing1基础上增加两个变量var1和var2。

var1生成规则如下:
当i=1时(即是第一个观测值),var1(i)=0;
当i>1时,var1(i)=intensity(i)-intensity(i-1)

var2生成规则如下:
当i=1或i=last(即为第一个或者最后一个观测值)时,var2(i)=0;

当i>1时且i≠last,var1(i)={intensity(i)-intensity(i-1)} / {intensity(i)-intensity(i+1)}。为避免此情况下分母为0,当intensity(i)=intensity(i+1)时,var2=0。

上传总是失败,测试数据集见https://bbs.pinggu.org/forum.php?mod=viewthread&tid=3210337&pid=26533938&page=1&extra=#pid26533938

望大家多多帮忙哈~

二维码

扫码加我 拉你入群

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

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

全部回复
2014-9-17 13:45:39
SAS中判断最后一个观测值的语句
data jing2;
set jing1 end=last ;
if last then shake=1000;
else shake=intensity-lag(intensity);
run;
但如何判断是第一个观测值的情况?
二维码

扫码加我 拉你入群

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

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

2014-9-17 14:30:01
i是什么?
二维码

扫码加我 拉你入群

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

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

2014-9-17 14:39:27
zhengbo8 发表于 2014-9-17 14:30
i是什么?
i 是观测值的顺序,i=1就是第一个观测值,i=2是第二个观测值,以此类推
二维码

扫码加我 拉你入群

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

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

2014-9-17 14:50:32
zhengbo8 发表于 2014-9-17 14:30
i是什么?
这个程序卡在 1、如何用if判断是第一个观察值
                    2、变量intensity的前一个值可以用lag函数获取,后一个值如何获取?
二维码

扫码加我 拉你入群

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

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

2014-9-17 23:33:09
这个程序卡在 1、如何用if判断是第一个观察值   if _n_=1; 假设device id 有不一样的,by device_id; 后用first.device_id
                    2、变量intensity的前一个值可以用lag函数获取,后一个值如何获取?
参考思路:
data a;   **original data;
  set a;
  ord=_n_;
run;

data b;
  set a(firstobs=2);
  ord=_n_;
  rename idensity=idensity_next;
  keep ord iden:;
run;

data final;
  merge a b;
    by ord;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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