楼主: jjpanda1111
4258 10

[求助]请帮忙看看,为什么我的程序无法将SAS数据集转换为外部文件? [推广有奖]

  • 5关注
  • 0粉丝

教授

24%

还不是VIP/贵宾

-

威望
0
论坛币
9100 个
通用积分
173.2330
学术水平
38 点
热心指数
42 点
信用等级
37 点
经验
23751 点
帖子
733
精华
0
在线时间
1493 小时
注册时间
2006-8-4
最后登录
2024-4-20

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币

data _null_;
   input Name $ 1-8 Gender $ 11 Status $13 Year $ 15-16
         Section $ 18 Score 20-21 FinalGrade 23-24;
   datalines;
Abbott    F 2 97 A 90 87
Branford  M 1 98 A 92 97
Crandell  M 2 98 B 81 71
Dennison  M 1 97 A 85 72
Edgar     F 1 98 B 89 80
Faust     M 1 97 B 78 73
Greeley   F 2 97 A 82 91
Hart      F 1 98 B 84 80
Isley     M 2 97 A 88 86
Jasper    M 1 97 B 91 93
;
file "F:\My SAS Files\TEST\grade.dat";
put _all_;
run;

总是报错“ERROR 180-322: 语句无效或未按正确顺序使用。”

二维码

扫码加我 拉你入群

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

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

关键词:sas数据集 数据集 Section Gender Dennis 程序 文件 SAS 数据集

回帖推荐

PharmD 发表于5楼  查看完整内容

filename grade "F:\My SAS Files\TEST\grade.dat"; /* 文件名一定要单独声明,不能放在file语句里。*/data work.temp; /*创建数据文件,没什么好讲解的*/   input Name $ 1-8 Gender $ 11 Status $13 Year $ 15-16         Section $ 18 Score 20-21 FinalGrade 23-24;   datalines;Abbott    F 2 97 A 90 87Branford  M 1 98 A 92 97Crandell& ...

losttemple 发表于3楼  查看完整内容

data a;   input Name $ 1-8 Gender $ 11 Status $13 Year $ 15-16          Section $ 18 Score 20-21 FinalGrade 23-24;   file "d:\peter.hu\grade.dat";put _all_;   datalines;你的input语句可能有问题

本帖被以下文库推荐

沙发
jjpanda1111 发表于 2008-5-8 09:08:00 |只看作者 |坛友微信交流群
请版主帮忙看看

使用道具

藤椅
losttemple 发表于 2008-5-8 10:20:00 |只看作者 |坛友微信交流群

data a;
   input Name $ 1-8 Gender $ 11 Status $13 Year $ 15-16
         Section $ 18 Score 20-21 FinalGrade 23-24;
   file "d:\peter.hu\grade.dat";
put _all_;
   datalines;

你的input语句可能有问题

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

使用道具

板凳
jjpanda1111 发表于 2008-5-8 12:17:00 |只看作者 |坛友微信交流群
谢谢楼上的同学!

使用道具

报纸
PharmD 发表于 2008-5-9 09:39:00 |只看作者 |坛友微信交流群

filename grade "F:\My SAS Files\TEST\grade.dat"; /* 文件名一定要单独声明,不能放在file语句里。*/

data work.temp; /*创建数据文件,没什么好讲解的*/
   input Name $ 1-8 Gender $ 11 Status $13 Year $ 15-16
         Section $ 18 Score 20-21 FinalGrade 23-24;
   datalines;
Abbott    F 2 97 A 90 87
Branford  M 1 98 A 92 97
Crandell  M 2 98 B 81 71
Dennison  M 1 97 A 85 72
Edgar     F 1 98 B 89 80
Faust     M 1 97 B 78 73
Greeley   F 2 97 A 82 91
Hart      F 1 98 B 84 80
Isley     M 2 97 A 88 86
Jasper    M 1 97 B 91 93
;
run;

data _null_;/*写入到外部文件*/
    set work.temp;
file grade;
put _all_;
run;

proc datasets library=work;/*把临时数据集temp删除,不是必须的,楼主看着办*/
delete temp;
run;

*************************************************************

datalines和file语句不能放一起。

对你有帮助的话请回复。

[此贴子已经被作者于2008-5-9 9:53:28编辑过]

已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 10 精彩帖子

总评分: 经验 + 3  论坛币 + 10   查看全部评分

使用道具

地板
jjpanda1111 发表于 2008-5-9 21:00:00 |只看作者 |坛友微信交流群

谢谢楼上的同学!

使用道具

7
PharmD 发表于 2008-5-10 05:13:00 |只看作者 |坛友微信交流群

======在 2008-5-9 21:00:00 jjpanda1111来信中写道:======
谢谢你的帮助,但还想向你请教怎么生成的外部文件里面有错。
======================================

I did not know how exactly you want the .dat file to be. I guess you want a .dat with nothing but the below -

Abbott F 2 97 A 90 87
Branford M 1 98 A 92 97
Crandell M 2 98 B 81 71
Dennison M 1 97 A 85 72
Edgar F 1 98 B 89 80
Faust M 1 97 B 78 73
Greeley F 2 97 A 82 91
Hart F 1 98 B 84 80
Isley M 2 97 A 88 86
Jasper M 1 97 B 91 93

If yes, then replace "put _all_;" statement with "put name gender status year section score finalgrade;", and then your file will look fine.

--------------------------------------------------------

Again, please reply to this post and state my solution solves your problem if that is indeed true.

使用道具

8
你的太阳 发表于 2008-5-10 10:32:00 |只看作者 |坛友微信交流群

首先 你的input语句有错误,对于Dennison来说,它不止有八列,你可以不用在变量名后指明列,

其次,我记得用FIFE时它的文件要提前在FILENAME中提前声明

你还可以用PORC PRINTTO 或者proc export解决这个问题

使用道具

9
lwien007 发表于 2008-5-10 14:17:00 |只看作者 |坛友微信交流群
3楼正解,你的程序语句顺序不正确,在同一个data步中,datalines 语句后边除了要输入的数据,不应该有其他语句,你把file 语句和put语句放到datalines后边,所以出错,把file语句和put语句放到datalines 前边,问题就解决了。

[此贴子已经被作者于2008-5-10 14:34:45编辑过]

使用道具

10
PharmD 发表于 2008-5-10 20:34:00 |只看作者 |坛友微信交流群
filename grade "F:\My SAS Files\TEST\grade.dat";

data _null_;
   input Name $ 1-8 Gender $ 11 Status $13 Year $ 15-16
         Section $ 18 Score 20-21 FinalGrade 23-24;
         file grade;
put  name gender status year section score finalgrade;
   datalines;
Abbott    F 2 97 A 90 87
Branford  M 1 98 A 92 97
Crandell  M 2 98 B 81 71
Dennison  M 1 97 A 85 72
Edgar     F 1 98 B 89 80
Faust     M 1 97 B 78 73
Greeley   F 2 97 A 82 91
Hart      F 1 98 B 84 80
Isley     M 2 97 A 88 86
Jasper    M 1 97 B 91 93
;
run;

原来这样就行了么?比我写的有效率多了。
谢谢楼上的两位。

使用道具

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

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

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

GMT+8, 2024-4-25 07:25