全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
5525 3
2008-07-29

求助高手:
有一个EXCEL2000的计划数据表,内容如下:
                   2008年7月份计划
单位 类别 总成号 零件号 班次 1日 2日 3日 4日 ……
三车间 310 a2902 a2902-1 白班 100 70 110 50  
三车间 310 a2902 a2902-2 白班 110 70 110 50  
三车间 310 a2902 a2902-3 白班 100 50 110 70  
三车间 310 a2902 a2902-4 白班 150 60 110 50  
三车间 430 c2321 c2321-1 白班 150   80    

用下列程序将上面EXCEL2000的计划数据表导入SAS数据集:
proc import out = thsjk
datafile = "F:\gs\scjh2008_7.xls"
dbms = excel2000 replace;
sheet=sheet1;
getnames = no;
datarow=3;
run;

运行出错。

求助高人:
1、 应如何将上面EXCEL2000的计划数据表导入SAS数据集。
2、 是从sas数据集导出到EXCEL2000的问题,由于EXCEL2000只有A-IV 共256列,如果SAS数据集的变量大于256个,该怎样控制数据集的变量数,导出到EXCEL2000一个文件中(即sheet1、sheet2….)。
3、 四车间按总成号a2902将零件号a2902- * 总装,计划1日总装99件、2日总装50件、3日总装110件、4日总装50件,应如何对照总装计划编程?
4、 如果按零件号a2902- * 的最小数量总装呢?

谢谢!!!!!!

[此贴子已经被作者于2008-7-29 11:43:07编辑过]

二维码

扫码加我 拉你入群

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

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

全部回复
2008-7-30 11:11:00

datafile="文件名"|tables="表名"

其中文件名是EXCEL文件名,包括路径,表名是指SheetT的名字.

另外,变量名应改成英文的,中名的好象无法转成SAS,好象SAS的变量名不能用中文.

另外,如果不想费事,你可以用菜单上的导入命令先试一次,并把导入过程存成程序,然后打开你研究研究,就能看出来该怎么写了.(菜单导入导出过程中均提示你是否把过程命令存为程序,你选择是就可以保存了)

第二个问题,你可以编程把每个SHEET转入一次,然后再合并merge.

第三第四个问题没看懂你的意思.

[此贴子已经被作者于2008-7-30 11:15:02编辑过]

二维码

扫码加我 拉你入群

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

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

2008-7-30 14:54:00

  首先第一个问题:datafile=....和out=thsjk 的位置互换,还有象二楼所说的sas不识别中文的变量名字,所以你在excel中将变量名改为英文的,同时将getnames=yes;这就可以导入了。

  第二个问题,我的办法有点笨。例如sas数据集为shujuj1共300个变量:

    data shujuj2(keep=a1 a2 a3........a256);

    set shujuj2;

    run;

   以此类推。

  第三个问题 首相我不清楚你说的四车间是第四车间,还是共四个都要算。我就按照第四车间给你算了。

   data shuju;

   set thsjk;

   if danwei(单位)=4;

   sum=1日总装+2日总装+3日总装.....;生成一个新变量为总装

   %let  sum2=sum;

   %let 零件号2=零件号;

   合并="&零件号2*&sum2";  /*这里我用的是中文,输入sas时你要用英文的,这里只有用宏才可以引用 变量 的值

  第四个问题; 把sum那行的语句改为:minzzh=min(1日总装+2日总装+3日总装....)

  

 

[em06]
二维码

扫码加我 拉你入群

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

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

2008-7-30 20:23:00

首先谢谢各位老师的回复!!

有些问题没说清楚,我解释一下:

第一个问题:我从书上看到将外部文件(如EXCEL2000)导入到SAS数据集的程序如下:
PROC IMPORT
OUT=<库.> 数据集名 /*“OUT”为要把导入的文件存放到SAS的哪一个(库里的)数据集*/
DATAFILE="filename" /*"filename"为要导入文件的完整路径与文件名*/
DBMS=excel2000   REPLACE;
sheet=sheet1; /*当导入Excel文件时,指定要导入Excel中的具体哪一页*/
getnames=yes | no ;/*当导入Excel文件时,用yes | no指定是否以第一行作为变量名。默认值为yes。如果指定后,原文件变量名不是有效的SAS名称或者指定getnames=no,SAS将会以var1、var2、var3……作为变量名*/
datarow=行数;  /*从外部文件的第几行开始读入数据*/
RUN;

我用这程序想将上面<2008年7月份计划>的EXCEL2000数据表导入SAS数据集中,程序的这句getnames=no ;不是可以以var1、var2、var3……自动作为变量名吗?可现在没有?

有没有什么方法能自动生成变量名。

还有这句 datarow=3;从外部文件的第3行开始读入数据。好象也不对,运行后SAS显示如下错误:
36   datarow=3;
     -------
     180
ERROR 180-322: Statement is not valid or it is used out of proper order.
37   run;


第二个问题:我的一个SAS数据集中有400-500个变量,而且变量名不规则。现想导到EXCEL2000中,而EXCEL2000的一页只有256列(也就是说一页只能存放256个变量),所以导不出

。如果用 KEEP= 或 DROP= 一个个地输就特别麻烦,有没有什么简单方法,将SAS数据集中的400-500个变量,导到一个EXCEL2000文件中的Sheet1、Sheet2页。


第三个问题:上表<2008年7月份计划>意思是:总成a2902是由零件a2902-1、a2902-2、a2902-3、a2902-4组装起来的。第三车间1日生产了总成a2902的零件分别为100、110、100

、150件。现有一生产计划要求1日总装a2902共99件、2日总装50件、3日总装110件、4日总装50件。我请教应如何对照总装计划进行组装,即生成下表:
单位     类别 总成号   零件号    班次 1日   2日   3日    4日
三车间 310  a2902                  白班 99     50    110     50
三车间 310  a2902   a2902-1   白班 1       20                         *这些是多出剩余下来的
三车间 310  a2902   a2902-2   白班 11     20        
三车间 310  a2902   a2902-3   白班 1                         20
三车间 310  a2902   a2902-4   白班 51     10        
三车间 310  c2321   a2321-1   白班 150            80    


第四个问题:也就是按照零件a2902-1、a2902-2、a2902-3、a2902-4的每日的最小数量进行总装,又该如何编程?

谢谢!!!

[此贴子已经被作者于2008-7-30 20:30:10编辑过]

二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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