楼主: cohen-ci
446 7

[有偿编程] SAS导入数据集 [推广有奖]

  • 1关注
  • 0粉丝

大专生

78%

还不是VIP/贵宾

-

威望
0
论坛币
603 个
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
458 点
帖子
38
精华
0
在线时间
68 小时
注册时间
2017-9-27
最后登录
2019-3-18

cohen-ci 发表于 2019-1-1 10:46:31 |显示全部楼层
15论坛币
程序如下:
%let dir=F:\硕士\毕业论文\data\普通股型;
%macro fetchfile(v_wz);
filename wjlj "%bquote(&v_wz.)";
data filename;
v_open=dopen('wjlj');
if v_open>0 then do;
v_num=dnum(v_open);
do i=1 to v_num;
v_tmp=cats("v_tmp",i);
v_tmp=tranwrd(v-tmp,"","");
v_mem=dread(v_open,i);
output filename;
end;
end;
keep v_mem v_tmp;
v_close=dclose(v_open);
run;
filename wjlj clear;
%mend fetchfile;
%fetchfile(&dir);
%macro readexcl(v_fname=,v_temp=);

PROC IMPORT OUT=v_temp
            DATAFILE= "F:\硕士\毕业论文\data\普通股型..xlsx"
            DBMS=EXCEL REPLACE;
     RANGE="万得$";
     GETNAMES=YES;
     MIXED=NO;
     SCANTEXT=YES;
     USEDATE=YES;
     SCANTIME=YES;
RUN;
%mend readexcl;
data _null_;
set filename;
call execute('%readexcl(v_fname='||v_mem||',v_temp='||v_tmp||')');
run;
proc datasets library=work nolist;
delete target;
run;
%macro hbdata(v_tmp=);
pro append base=target data=&v_tmp force;
run;
%mend hbdata;
data _null_;
set filename;
call execute('hbdata(v_tmp='||v_tmp||')');
run;
%macro deletmp(v_tmp=);
proc datasets library=work nolist;
delete &v_tmp;
run;
%mend deletmp;
data _null_;
set filename;
call execute('%deletmp(v_tmp='||v_tmp||')');
run;

log提示:ERROR: 无法打开文件“F:\硕士\毕业论文\data\普通股型..xlsx”。该文件不存在或已被另一用户打开。或者您需要相应权限才能查看其数据
本人SAS是9.4 64位的,excel是wps版本(我百度看到的说WPS不分32和64),我创建新的excel时,显示的是excel2003.
请问论坛大佬,我改怎么修改,谢谢~

关键词:毕业论文 普通股
stata SPSS
sas9.4 发表于 2019-1-1 11:29:11 |显示全部楼层
"该文件不存在或已被另一用户打开",  filename incorrect or file is being opened.
回复

使用道具 举报

cohen-ci 发表于 2019-1-1 11:45:50 |显示全部楼层
补充一下:excel格式是*.xlsx
回复

使用道具 举报

supersu35 发表于 2019-1-3 09:42:25 |显示全部楼层
  DATAFILE= "F:\硕士\毕业论文\data\普通股型..xlsx"
xlsx前有两个"."
回复

使用道具 举报

cohen-ci 发表于 2019-1-4 15:02:18 |显示全部楼层
supersu35 发表于 2019-1-3 09:42
DATAFILE= "F:\硕士\毕业论文\data\普通股型..xlsx"
xlsx前有两个"."
不是这个问题,无论一个点还是两个点都一样的报错~
回复

使用道具 举报

supersu35 发表于 2019-1-4 23:02:15 |显示全部楼层
如果一个点还是报错,说明不是文件名的问题。你启动的是中文版还是英文版? 如果是英文版,需将datafile中的中文该为英文。
回复

使用道具 举报

cohen-ci 发表于 2019-1-5 09:20:51 |显示全部楼层
supersu35 发表于 2019-1-4 23:02
如果一个点还是报错,说明不是文件名的问题。你启动的是中文版还是英文版? 如果是英文版,需将datafile中的 ...
中文版的
回复

使用道具 举报

magiclander 发表于 2019-1-7 02:28:56 |显示全部楼层
%let dir=F:\硕士\毕业论文\data\普通股型;   <--这个是真实路径???

PROC IMPORT OUT=v_temp
            DATAFILE= "F:\硕士\毕业论文\data\普通股型..xlsx"
            DBMS=EXCEL REPLACE;
是不是矛盾?
应该就是你的路径不对。直接到该文件,点右键-->属性-->位置 , 把该位置作为路径拷贝下来贴上。

似乎应改为 (*可以改成具体的名字)
PROC IMPORT OUT=v_temp
            DATAFILE= "F:\硕士\毕业论文\data\普通股型\*.xlsx"
            DBMS=EXCEL REPLACE;

回复

使用道具 举报

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

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

GMT+8, 2019-3-20 07:52