楼主: Actree
6962 7

[原创博文] 一个filename的问题 [推广有奖]

  • 6关注
  • 2粉丝

讲师

30%

还不是VIP/贵宾

-

威望
0
论坛币
2704 个
通用积分
0
学术水平
9 点
热心指数
12 点
信用等级
8 点
经验
29471 点
帖子
272
精华
0
在线时间
485 小时
注册时间
2010-11-28
最后登录
2020-6-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有一个excel文件(.xls):

x  y
1  2
3  4

以下这个程序为什么不能工作?

  1. filename test 'c:\testxls.xls';
  2. data practice;
  3.     infile test;
  4.     input x y;
  5. run;

  6. proc print data=practice;run;
复制代码
二维码

扫码加我 拉你入群

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

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

关键词:filename file name ENA Practice practice excel 程序

回帖推荐

junuylia 发表于2楼  查看完整内容

这是xls文件,所以应该用libname.

本帖被以下文库推荐

沙发
junuylia 发表于 2011-2-18 05:14:08 |只看作者 |坛友微信交流群
这是xls文件,所以应该用libname.
  1. libname test 'c:\testxls.xls';
  2. data practice;
  3.    set test.'sheet1'n;
  4. run;

  5. proc print data=practice;
  6. run;
复制代码
已有 2 人评分经验 论坛币 热心指数 收起 理由
bakoll + 3 + 3 精彩帖子
Actree + 1 鼓励积极发帖讨论

总评分: 经验 + 3  论坛币 + 3  热心指数 + 1   查看全部评分

使用道具

藤椅
Actree 发表于 2011-2-18 08:44:54 |只看作者 |坛友微信交流群
多谢,但是:
1. 什么时候用filename和input statement呢?是不是基本上都用在raw data文件上?
2. ‘sheet1’n 中那个n是什么意思?b] 2# junuylia

使用道具

板凳
Actree 发表于 2011-2-18 08:58:15 |只看作者 |坛友微信交流群
奇怪,每次我run这个code:
  1. libname book2 'c:\book2.xls';
  2. data practice;
  3.     set book2.'sheet1'n;
  4. run;
复制代码
每次都不成功:
183  libname book2 'c:\book2.xls';
NOTE: 已成功分配逻辑库引用名 BOOK2,如下所示:
       引擎:        EXCEL
       物理名: c:\book2.xls
184
185  data practice;
186
187     set book2.'sheet1'n;
ERROR: 文件 BOOK2.sheet1.DATA 不存在。
188
189  run;

NOTE: SAS 系统由于错误而停止了该步的处理。
WARNING: 数据集 WORK.PRACTICE 可能不完整。该步停止时,共有 0 个观测和 0 个变量。
WARNING: 数据集 WORK.PRACTICE 由于该步已停止,而没有被替换。
NOTE: “DATA 语句”所用时间(总处理时间):
      实际时间         0.00 秒
这还不是最可怕的,最可怕的是每次run完程序book2(或者任何新创的excel2003file)都不能打开了:
“无法访问 "book2.xls"。该文件可能已经损坏,或者文件所在的服务器没有响应,或者该文件是只读的。”

使用道具

报纸
junuylia 发表于 2011-2-18 23:17:30 |只看作者 |坛友微信交流群
4# Actree

不好意思,应该是'sheet1$'n

一般filename 和infile是用在读取普通文本文件时使用的。而SAS对excel文件可以特殊处理,使用libname调用xls文件,因此是把xls文件当成一个lib,而把里面的sheet作为dataset。如果你的xls文件里有不同的sheet,取到不同的名字,比如sheet1, sheet2, sheet3,在调用的时候就用book2.'sheet1$'n

在使用完这个命令以后,如果要取消libname绑定,可以加
  1. libname book2 clear;
复制代码

使用道具

地板
junuylia 发表于 2011-2-18 23:19:10 |只看作者 |坛友微信交流群
3# Actree

'sheet1$'n是固定用法,把相应的sheet名替换到sheet1处即可

使用道具

7
elek.me 发表于 2011-2-18 23:41:32 |只看作者 |坛友微信交流群
用libname,其实是用了SAS里的 XLS engine
我的博客: http://elek.me/sas
联系我: http://about.me/elek

使用道具

8
420948492 发表于 2011-12-20 22:58:00 |只看作者 |坛友微信交流群
学习了
有人的地方就有江湖

使用道具

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

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

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

GMT+8, 2024-4-28 05:58