全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学
11612 50
2009-12-21

之前在此问过相同问题,但可能是本人没有把问题说清楚,导致好多人虽然给出了解答,但都没有实现我想要的目的。

本人在处理一些数据(其中部分,我摘到了附件funwin.xls中表1 “原数据”)时,发现有的数据月份不全,有的公司提供季度数据,有的公司提供半年数据。而我想要的是月数据。所以我希望把季度数据和半年数据中缺失的月份都补上(让缺失的月份和上一个已有的月份的数据相同)。即按公司company,让缺失月的产品product和数量quant值与上一个已知月的产品product和数量quant值一样。比如已经知道199009,199012,199103…等月份的数据,我希望补充199010199011的数据和199009的一样;199101199102的数据和199012的一样。(想要的数据就像:附件funwin.xls中表二“补充后的数据”)。

非常感谢那些无私给予帮助的人!
附件列表

funwin.xls

大小:41.5 KB

 马上下载

二维码

扫码加我 拉你入群

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

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

全部回复
2009-12-21 05:28:45
dm "clear output";
dm "clear log";
PROC IMPORT OUT= WORK.OLD
            DATAFILE= "C:\mysas\input\test\original.xls"
            DBMS=EXCEL REPLACE;
     SHEET="'1$'";
     GETNAMES=YES;
     MIXED=YES;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;
data old1 (drop=date) ;
set old;
newdate=input(cat(date),YYMMN6.);
format newdate MONYY7.;
run;
proc sort data=old1 out=old2;
by company product newdate;
run;
*Remove the product with only one observation (will cause error in expand proc).;
data old3;
set old2;
by company product newdate;
if first.product=1 and last.product=1 then delete;
run;
proc expand data=old3 out=old4(drop=quant) to=month;
by company product;
id newdate;
run;
data new;
merge old2 old4;
by company product newdate;
run;
data new (drop=quant  rename=(quant1=quant));
set new;
retain quant1;
if quant ^= . then quant1=quant;
run;
data new;
set new;
date=substr(put(newdate,MMDDYY10.),7)||substr(put(newdate,MMDDYY10.),1,2);
run;


*Not sure if it's what you need.;
二维码

扫码加我 拉你入群

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

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

2009-12-21 12:04:27
2# funnyxuke

谢谢你的关注,你的解答非常接近了,但是还是没有实现我所要的。首先如果company100001全部补足后,应该有220行,但用你的code我运算后,只有114行。少了6行。 其次 我发现company100001的199103月有02680410这个产品,但199104 199105两个月都没有补上这个产品,从而导致199103月有9行(9个产品),但199104 199105两个月只有8个产品。主要原因是199103月是这个产品02680410出现的最后月份,所以你的语句中可能没有再对这个产品进行补足在随后的两个月199104 199105,是否是这样?能否解决这个问题?!
希望再次给予帮助!多谢
二维码

扫码加我 拉你入群

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

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

2009-12-21 13:00:16
company 100001 product 02680410
1991年3月已经是最后一个数据拉,这个也要往下衍生吗? 你要补中间的gap,还是要往后面延伸?
前面的product到12月份最后数据的就没有延伸。







3# funwin
二维码

扫码加我 拉你入群

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

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

2009-12-21 13:06:27
可以加一个判断,如果最后1个是12月就不加,其他的多加2个月?
是这个意思吗?
二维码

扫码加我 拉你入群

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

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

2009-12-21 13:44:41
5# funnyxuke

其实 我要补的是缺失的月份,默认缺失的月份和上一个已知月份的产品和数量一样,而不是看产品是不是最后一个。
比如199003月有A产品,那么丢失的199004 199005月 也要有A产品。除非199003是最后一个月,那就不需要补充后面的月份的数据了。
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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