楼主: lizhewenbei
2225 12

[终极求助]问了很多高手,都给了不少意见,但是哪位高手能演示一下如下5张表格? [推广有奖]

  • 15关注
  • 5粉丝

副教授

36%

还不是VIP/贵宾

-

威望
0
论坛币
309 个
通用积分
11.4770
学术水平
4 点
热心指数
13 点
信用等级
5 点
经验
9699 点
帖子
609
精华
0
在线时间
496 小时
注册时间
2008-2-6
最后登录
2024-1-9

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
[终极求助]问了很多高手,都给了不少意见,但是合在一起,还是很难完整地处理问题。
哪位高手能演示一下如下5张表格?
很简单的要求:
1、全部导入(把EXCEL文件名字改为统一格式);
2、把变量名字改为英文(去掉中文)
3、把5张表格捏合在一起。

感谢sushe的帮助,根据你的程序,我的sas有如下问题,还希望你能指教!
1、运行下列程序出现报错,只能手动把黑框框给关了,然后程序继续运行:
*指定输出数据集前缀;
%let OutPrefix=test;
x "dir &path.*.xls /b > &path.fname.txt";
1.jpg

2、运行下列程序,有错误提示:
%macro importxls(filename,ith);
proc import datafile="&path.&filename" out=&OutPrefix.&ith dbms=excel replace;
getnames=no;
sheet="HKBS";
run;
*以下三行语句是合并所有数据集,条件要求:数据集变量结构一致;
data all;
set %if &ith ne 1 %then all; &OutPrefix.&ith;
run;
%mend;
2.png

3、运行程序:结果all中只有301个样本,按道理应当是301(个样本/每个数据集)*5(个数据集)=1015个样本
3.png

4、得到结果:和work. test1的数据一模一样

4.jpg
5.png
二维码

扫码加我 拉你入群

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

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

关键词:filename replace import EXCEL Names EXCEL 英文 中文

test.rar

78.45 KB

待输入的5张表格

沙发
sushe1527 发表于 2015-1-25 18:24:52 |只看作者 |坛友微信交流群
  1. *指定数据文件所在的目录;
  2. %let path=f:\test\;
  3. *指定输出数据集前缀;
  4. %let OutPrefix=test;
  5. x "dir &path.*.xls /b > &path.fname.txt";
  6. %macro importxls(filename,ith);
  7. proc import datafile="&path.&filename" out=&OutPrefix.&ith dbms=excel replace;
  8. getnames=no;
  9. sheet="HKBS";
  10. run;
  11. *以下三行语句是合并所有数据集,条件要求:数据集变量结构一致;
  12. data all;
  13. set %if &ith ne 1 %then all; &OutPrefix.&ith;
  14. run;
  15. %mend;
  16. data _null_;
  17. infile "&path.fname.txt";
  18. input filename & $100.;
  19. *执行宏;
  20. call execute('%importxls(' || trim(filename) || ',' || _n_ || ')');
  21. run;
  22. data all;
  23. set all;
  24. label
  25. F1="CompanyCode"
  26. F2="LComNm"
  27. F3="EndDt"
  28. F4="DtTypeCd"
  29. F5="DtType"
  30. F6="ConFlg"
  31. F7="AdjFlg"
  32. F8="AccStdCd"
  33. F9="AccStdNm"
  34. F10="CurUnit"
  35. F11="ComType"
  36. F12="Invtr"
  37. F13="AccRecv"
  38. F14="NoteRecv"
  39. F15="AmtFmRelCom"
  40. F16="TotAss"
  41. F17="TotLia"
  42. F18="AdvRecp"
  43. F19="TotAssLessCurLia"
  44. F20="TotAssLessTotLia"
  45. F21="SHE"
  46. F22="TotSHE"
  47. F23="TotSHENCurLia"
  48. F24="TotSHETotLia";
  49. run;
复制代码
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 5 + 2 + 2 + 2 精彩帖子

总评分: 论坛币 + 5  学术水平 + 2  热心指数 + 2  信用等级 + 2   查看全部评分

使用道具

藤椅
lizhewenbei 学生认证  发表于 2015-1-25 20:14:42 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-1-25 18:24
感谢sushe,我在运行程序中,遇到了一些问题,将其列在原帖中,还请你看看。

使用道具

板凳
sushe1527 发表于 2015-1-25 23:46:22 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2015-1-25 20:14
感谢sushe,我在运行程序中,遇到了一些问题,将其列在原帖中,还请你看看。
黑框不是问题,确实是提取文件名的必须步骤
至于其他问题,可能是excel确实不一样 同义一字段 有些是字符 有些的数字

使用道具

报纸
wklkw 在职认证  发表于 2015-1-27 16:16:36 |只看作者 |坛友微信交流群
你可以把数据集test中的字段F12, F22类型改成和all一样,然后再合并就可以了

使用道具

地板
lizhewenbei 学生认证  发表于 2015-1-27 16:30:02 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-1-25 23:46
黑框不是问题,确实是提取文件名的必须步骤
至于其他问题,可能是excel确实不一样 同义一字段 有些是字符 ...
那能用input修改这些个别字段的格式吗?好像EXCEL一旦导入,就不能再修改变量类型了。此外,导入的EXCEL第一行并非观测,而是原来的变量名,请问怎么把它去掉呢?

使用道具

7
lizhewenbei 学生认证  发表于 2015-1-27 16:31:42 |只看作者 |坛友微信交流群
wklkw 发表于 2015-1-27 16:16
你可以把数据集test中的字段F12, F22类型改成和all一样,然后再合并就可以了
您的意思是在导入以后,用SAS修改类型吗?我每次都想用INPUT语句修改,但是修改不了。请问能用input修改F12, F22类型吗?

使用道具

8
sushe1527 发表于 2015-1-27 17:17:40 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2015-1-27 16:31
您的意思是在导入以后,用SAS修改类型吗?我每次都想用INPUT语句修改,但是修改不了。请问能用input修改F ...
经观察,只有几个变量不符合,那么,强制转化数据类型,改名,还不能用F1=PUT(F1,8$.)这种然后重新retain排序,加label,这次经验证 没问题了


  1. *指定数据文件所在的目录;
  2. %let path=f:\test\;
  3. *指定输出数据集前缀;
  4. %let OutPrefix=test;
  5. x "dir &path.*.xls /b > &path.fname.txt";
  6. %macro importxls(filename,ith);
  7. proc import datafile="&path.&filename" out=&OutPrefix.&ith dbms=excel replace;
  8. getnames=no;
  9. sheet="HKBS$";
  10. run;
  11. data &OutPrefix.&ith;
  12. set &OutPrefix.&ith;
  13. _F12=put(F12,$12.);
  14. _F22=put(F22,$12.);
  15. _F15=put(F15,$12.);
  16. _F18=put(F18,$12.);
  17. _F23=put(F23,$12.);
  18. drop F12 F22 F15 F18 F23;
  19. RUN;
  20. *以下三行语句是合并所有数据集,条件要求:数据集变量结构一致;
  21. data all;
  22. set %if &ith ne 1 %then all; &OutPrefix.&ith;
  23. if _n_=1 then delete;
  24. run;
  25. %mend;
  26. data _null_;
  27. infile "&path.fname.txt";
  28. input filename & $100.;
  29. *执行宏;
  30. call execute('%importxls(' || trim(filename) || ',' || _n_ || ')');
  31. run;
  32. data all;
  33. RETAIN
  34. F1        F2        F3        F4        F5        F6        F7        F8        F9        F10        F11        _F12        F13        F14        _F15        F16        F17        _F18        F19        F20        F21        _F22        _F23        F24
  35. ;
  36. set all;
  37. label
  38. F1="CompanyCode"
  39. F2="LComNm"
  40. F3="EndDt"
  41. F4="DtTypeCd"
  42. F5="DtType"
  43. F6="ConFlg"
  44. F7="AdjFlg"
  45. F8="AccStdCd"
  46. F9="AccStdNm"
  47. F10="CurUnit"
  48. F11="ComType"
  49. _F12="Invtr"
  50. F13="AccRecv"
  51. F14="NoteRecv"
  52. _F15="AmtFmRelCom"
  53. F16="TotAss"
  54. F17="TotLia"
  55. _F18="AdvRecp"
  56. F19="TotAssLessCurLia"
  57. F20="TotAssLessTotLia"
  58. F21="SHE"
  59. _F22="TotSHE"
  60. _F23="TotSHENCurLia"
  61. F24="TotSHETotLia";
  62. run;
复制代码


QQ截图20150127171311.jpg (81.47 KB)

QQ截图20150127171311.jpg

all.rar

26.88 KB

本附件包括:

  • all.sas7bdat

已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
lizhewenbei + 1 + 1 + 1 + 1 精彩帖子

总评分: 论坛币 + 1  学术水平 + 1  热心指数 + 1  信用等级 + 1   查看全部评分

使用道具

9
lizhewenbei 学生认证  发表于 2015-1-27 20:36:38 |只看作者 |坛友微信交流群
sushe1527 发表于 2015-1-27 17:17
经观察,只有几个变量不符合,那么,强制转化数据类型,改名,还不能用F1=PUT(F1,8$.)这种然后重新retai ...
非常感谢sushe,我还发现一个问题,如果下载这些原始数据后,不把EXCEL全部打开一遍再关闭。调用你的程序就会出错,ERROR: 连接: 外部表不是预期的格式。ERROR: LIBNAME 语句出错。只有全部把EXCEL打开再关闭,运行才没有问题。现在的问题是:如果表格很多,比如100多张,岂不是要先将其全部打开再全部关闭?
这个问题能否解决呢?

使用道具

10
sushe1527 发表于 2015-1-27 20:45:51 |只看作者 |坛友微信交流群
lizhewenbei 发表于 2015-1-27 20:36
非常感谢sushe,我还发现一个问题,如果下载这些原始数据后,不把EXCEL全部打开一遍再关闭。调用你的程序 ...
确实 打开的时候我就发现了,感觉像有病毒的样子

使用道具

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

本版微信群
加好友,备注cda
拉您进交流群

京ICP备16021002-2号 京B2-20170662号 京公网安备 11010802022788号 论坛法律顾问:王进律师 知识产权保护声明   免责及隐私声明

GMT+8, 2024-4-24 22:41