楼主: xmubaorui
1836 8

[原创博文] SAS文件夹连续表格导入 [推广有奖]

  • 4关注
  • 1粉丝

大专生

38%

还不是VIP/贵宾

-

威望
0
论坛币
267 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
427 点
帖子
44
精华
0
在线时间
49 小时
注册时间
2011-11-11
最后登录
2013-3-12

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
某个文件夹里有编号连续的excel表格(现券买卖双边报价1-21),用如下程序导入,结果出现:宏 QUOTE 已被指定了保留名称、将编译哑宏、宏函数名后没有找到期望的左括号三个错误,忘高手指正:
%macro import;
PROC IMPORT OUT= WORK.quote&i
            DATAFILE= "E:\Data\现券买卖双边报价\现券买卖双边报价&i..xls"
            DBMS=EXCEL REPLACE;
     RANGE="CBDDUALBID$";
     GETNAMES=NO;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
  run;
%mend import;
%macro quote;
%do i=1 %to 21;
%import;
%end;
%mend quote;
%quote;
二维码

扫码加我 拉你入群

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

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

关键词:文件夹 replace excel表格 import Excel表 excel表格 import 文件夹 EXCEL 程序

沙发
chendonghui1987 发表于 2012-4-27 16:17:01 |只看作者 |坛友微信交流群

%macro a;
%do i=1 %to 21;
        PROC IMPORT OUT= WORK.quote&i
            DATAFILE= "E:\Data\现券买卖双边报价\现券买卖双边报价&i..xls"
            DBMS=EXCEL REPLACE;
     RANGE="CBDDUALBID$";
     GETNAMES=NO;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
  run;
%end;
%mend a;
%a;

使用道具

藤椅
xmubaorui 在职认证  发表于 2012-4-27 18:50:20 |只看作者 |坛友微信交流群
chendonghui1987 发表于 2012-4-27 16:17
%macro a;
%do i=1 %to 21;
        PROC IMPORT OUT= WORK.quote&i
谢谢仁兄,你的代码已经把问题解决啦!我的程序虽然繁琐一点,但是貌似也没有什么问题。。。

使用道具

板凳
xmubaorui 在职认证  发表于 2012-4-27 19:43:01 |只看作者 |坛友微信交流群
chendonghui1987 发表于 2012-4-27 16:17
%macro a;
%do i=1 %to 21;
        PROC IMPORT OUT= WORK.quote&i
再请问一下 怎么合并 quote1-quote21这21个数据集

使用道具

报纸
chendonghui1987 发表于 2012-4-27 20:01:29 |只看作者 |坛友微信交流群
如果数据结构相同,可以用set做:

data work.a;
        input a $ b;
        datalines;
a 1
b 2
;
run;

data work.a1;
        input a $ b;
        datalines;
c 1
d 2
;
run;

data work.c;
        set work.a work.a1;
run;

使用道具

地板
xmubaorui 在职认证  发表于 2012-4-27 22:07:13 |只看作者 |坛友微信交流群
chendonghui1987 发表于 2012-4-27 20:01
如果数据结构相同,可以用set做:

data work.a;
数据结构是一样的,但是那不是要手动输入 quote1 quote2....quote21吗,有没有类似of quote: 之类的方法,之前好像在哪里见过

使用道具

7
chendonghui1987 发表于 2012-4-28 09:35:13 |只看作者 |坛友微信交流群
这种方法好像是data变量才能使用吧,数据集好像不能这样用吧

使用道具

8
可~乐 发表于 2012-4-30 11:38:36 |只看作者 |坛友微信交流群
可以试试这样。。。
  1. %macro data;
  2. data all;
  3. set %do j=1 %to 4; data&j. %end;;/*注意此处有两个分号,而%end前没有分号,set可以换成merge等*/
  4. run;
  5. %mend data;
复制代码

使用道具

9
xmubaorui 在职认证  发表于 2012-4-30 12:15:58 |只看作者 |坛友微信交流群
其实可以直接用set data1-datan

使用道具

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

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

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

GMT+8, 2024-4-27 11:07