全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
6147 6
2016-07-09
现在我有一个数据文件,有6个变量,
date,               time,       sa,      sx,          sy,         sz,
22/08/2012     00:01      0.32    14.55     90.32     104.55
22/08/2012     00:02      0.34    14.56     90.34     104.78
22/08/2012     00:04      0.33    14.60     90.52     104.68
22/08/2012     00:08      0.31    14.44     90.50     104.59



我想按每秒的时间间隔自动填充数据,比如:00:03秒时,该行记录等于上一秒记录,每次增加一行,直到该时间有记录。

date,               time,       sa,      sx,          sy,         sz,
22/08/2012     00:01      0.32    14.55     90.32     104.55
22/08/2012     00:02      0.34    14.56     90.34     104.78
22/08/2012     00:03      0.34    14.56     90.34     104.78
22/08/2012     00:04      0.33    14.60     90.52     104.68
22/08/2012     00:05      0.33    14.60     90.52     104.68
22/08/2012     00:06      0.33    14.60     90.52     104.68
22/08/2012     00:07      0.33    14.60     90.52     104.68
22/08/2012     00:08      0.31    14.44     90.50     104.59



希望大神指导。 非常感谢!!!!
二维码

扫码加我 拉你入群

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

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

全部回复
2016-7-10 18:58:21
有人可以帮助解决吗?
二维码

扫码加我 拉你入群

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

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

2016-7-11 11:20:11
这种填充缺失数据的代码,最恶心了。。。。。必须打赏啊。。
复制代码
二维码

扫码加我 拉你入群

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

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

2016-7-11 12:43:11
data a;
        input date time sa sx sy sz;
        informat date ddmmyy8. time time6.;
        format date ddmmyy8. time time6.;
        datalines;
22/08/2012 00:01 0.32 14.55 90.32 104.55
22/08/2012 00:02 0.34 14.56 90.34 104.78
22/08/2012 00:04 0.33 14.60 90.52 104.68
22/08/2012 00:08 0.31 14.44 90.50 104.59
22/08/2012 00:09 0.31 14.44 90.50 104.59
22/08/2012 00:13 0.31 14.44 90.50 104.59
;
run;

proc sort; by date time; run;

data b;
merge a a(firstobs=2 keep=time rename=(time=time1));
run;

data c;
set b;
by date time;
retain time;
if last.date then time1=.;
dif=(time1-time);
output;
if dif>60 then do until (time=time1-60);
time=time+60;
output;
end;
run;
二维码

扫码加我 拉你入群

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

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

2016-7-11 12:43:12
data a;
        input date time sa sx sy sz;
        informat date ddmmyy8. time time6.;
        format date ddmmyy8. time time6.;
        datalines;
22/08/2012 00:01 0.32 14.55 90.32 104.55
22/08/2012 00:02 0.34 14.56 90.34 104.78
22/08/2012 00:04 0.33 14.60 90.52 104.68
22/08/2012 00:08 0.31 14.44 90.50 104.59
22/08/2012 00:09 0.31 14.44 90.50 104.59
22/08/2012 00:13 0.31 14.44 90.50 104.59
;
run;

proc sort; by date time; run;

data b;
merge a a(firstobs=2 keep=time rename=(time=time1));
run;

data c;
set b;
by date time;
retain time;
if last.date then time1=.;
dif=(time1-time);
output;
if dif>60 then do until (time=time1-60);
time=time+60;
output;
end;
run;
二维码

扫码加我 拉你入群

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

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

2016-7-12 06:55:41
如果你确认00:03那个世界单位是秒,就这样试试:

data a;
input date ddmmyy10. @12time time8. sa sx sy sz;
format date ddmmyy10. time time8.;
cards;
22/08/2012 0:00:01 0.32 14.55  90.32 104.55
22/08/2012 0:00:02 0.34 14.56  90.34 104.78
22/08/2012 0:00:04 0.33 14.60  90.52 104.68
22/08/2012 0:00:08 0.31 14.44  90.50 104.59
;
run;
data b;
set a ;
timel=lag(time); sal=lag(sa); sxl=lag(sx); syl=lag(sy); szl=lag(sz);
output;
dif=time-timel;
if dif>1 then do until (time=timel+1);
timel = timel +1;
output;
end;
keep date timel sal sxl syl szl;
run;
data c;
merge a b(firstobs=2 rename=(timel=time sal=sa sxl=sx syl=sy szl=sz));
by time;
run;
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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