楼主: funwin
11876 50

再次求助 如何插入(补充)缺失月份的数据? [推广有奖]

  • 0关注
  • 2粉丝

硕士生

85%

还不是VIP/贵宾

-

威望
0
论坛币
177 个
通用积分
0
学术水平
0 点
热心指数
4 点
信用等级
0 点
经验
2256 点
帖子
192
精华
0
在线时间
131 小时
注册时间
2007-11-7
最后登录
2016-1-22

楼主
funwin 发表于 2009-12-21 00:09:54 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

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

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

非常感谢那些无私给予帮助的人!
二维码

扫码加我 拉你入群

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

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

关键词:Product company produc compan quant 求助 数据 缺失

沙发
funnyxuke 发表于 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.;

藤椅
funwin 发表于 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,是否是这样?能否解决这个问题?!
希望再次给予帮助!多谢

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







3# funwin

报纸
funnyxuke 发表于 2009-12-21 13:06:27
可以加一个判断,如果最后1个是12月就不加,其他的多加2个月?
是这个意思吗?

地板
funwin 发表于 2009-12-21 13:44:41
5# funnyxuke

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

7
funwin 发表于 2009-12-21 14:03:02
如果100001公司 199003月是最后一个月份, 那么之后的月份就不用补了。
假设100001公司 从199003 199006 199009 199012 199103 199106的数据,那么我就需要补入199004 199005的产品 数量 和199003产品 数量一样,。。。一直补到199104 199105的产品 数量和199103的一样,199106是该公司的最后一个月,所以该月之后 就不用补了。

8
jingju11 发表于 2009-12-21 22:36:13
7# funwin

我随便说一句,我总觉得你的这个问题在逻辑上有些不清楚或者是不合常理的地方,但是我说不上具体哪里。很抱歉。

9
funwin 发表于 2009-12-22 01:00:24
其实 我的逻辑很简单 因为我只有季度数据或半年数据,想添加缺失的月份,变成月数据。添加的方法就是 让缺失的月份的数据 和上一个已知的月份数据一样。如果觉得还是有问题,欢迎大家讨论一下,非常感谢!

10
funwin 发表于 2009-12-22 01:03:39
其实 如果仔细看看我在一楼附的“excel表中原数据和补充后的数据”,可以明白我想要什么。

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

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