楼主: dolphinfish
1991 4

两个关于output的问题 [推广有奖]

  • 0关注
  • 0粉丝

已卖:703份资源

讲师

24%

还不是VIP/贵宾

-

威望
0
论坛币
2768 个
通用积分
0.6353
学术水平
1 点
热心指数
4 点
信用等级
1 点
经验
13027 点
帖子
150
精华
0
在线时间
679 小时
注册时间
2009-8-26
最后登录
2021-5-29

楼主
dolphinfish 发表于 2010-2-16 08:00:30 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
有两个问题请高手指点:

1. 如果这样执行下面的程序,log说job 和 joblevel 都是uninitialized。不知道是为什么?应该如何改正?2. 如果可以执行output的话(改正了上面1,或用其它方式),既然job的长度是12,如果在put句子中joblevel前加上@5的话,究竟SAS是如何处理的呢?

data temp;

length job $12.;

input job &;

if job in ("actor i", "actor ii") then joblevel = "b";

if job ="actor iii" then joblevel = "a";

else joblevel ="U";

datalines;

actor i

actor ii

actor iii

actor iii

actor ii

actor ii

actor i

;
run;
data temp;

file "C:\Documents and Settings\All Users\Documents\doc.txt" dlm=",";
put job joblevel;
run;

谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:output outpu Out put documents output

回帖推荐

403605143 发表于4楼  查看完整内容

1.在file前面加set temp;就可以了 2.在job前加@5等于job的值从第五列开始输入

本帖被以下文库推荐

沙发
bobguy 发表于 2010-2-16 08:57:44
dolphinfish 发表于 2010-2-16 08:00
有两个问题请高手指点:

1. 如果这样执行下面的程序,log说job 和 joblevel 都是uninitialized。不知道是为什么?应该如何改正?2. 如果可以执行output的话(改正了上面1,或用其它方式),既然job的长度是12,如果在put句子中joblevel前加上@5的话,究竟SAS是如何处理的呢?

data temp;

length job $12.;

input job &;

if job in ("actor i", "actor ii") then joblevel = "b";

if job ="actor iii" then joblevel = "a";

else joblevel ="U";

datalines;

actor i

actor ii

actor iii

actor iii

actor ii

actor ii

actor i

;
run;
data temp;

file "C:\Documents and Settings\All Users\Documents\doc.txt" dlm=",";
put job joblevel;
run;

谢谢!
The default delimiter is space. So when you have a string "actor i", it usually should use fix length format.

job 1-12 tells SAS reads position 1-12 as job values.

Another logic error is according to what I am understanding,
if job ="actor iii" then joblevel = "a";  ---> else if job ="actor iii" then joblevel = "a";

data temp;
length job $12.;
input  job 1-12;
if job in ("actor i", "actor ii") then joblevel = "b";
else if job ="actor iii" then joblevel = "a";
else joblevel ="U";

datalines;
actor i
actor ii
actor iii
actor iii
actor ii
actor ii
actor i
;
run;

proc print; run;

藤椅
dolphinfish 发表于 2010-2-16 09:19:56
谢谢bobguy,不过这不是个问题啊。因为&解决了embedded blank 的问题

如果按照修改后的程序,我提到的2个问题依然没有解决。。。

板凳
403605143 发表于 2010-2-16 14:20:32
dolphinfish 发表于 2010-2-16 08:00
有两个问题请高手指点:

1. 如果这样执行下面的程序,log说job 和 joblevel 都是uninitialized。不知道是为什么?应该如何改正?2. 如果可以执行output的话(改正了上面1,或用其它方式),既然job的长度是12,如果在put句子中joblevel前加上@5的话,究竟SAS是如何处理的呢?

data temp;

length job $12.;

input job &;

if job in ("actor i", "actor ii") then joblevel = "b";

if job ="actor iii" then joblevel = "a";

else joblevel ="U";

datalines;

actor i

actor ii

actor iii

actor iii

actor ii

actor ii

actor i

;
run;
data temp;

file "C:\Documents and Settings\All Users\Documents\doc.txt" dlm=",";
put job joblevel;
run;

谢谢!
1.在file前面加set temp;就可以了
2.在job前加@5等于job的值从第五列开始输入
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

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

报纸
dolphinfish 发表于 2010-2-16 15:48:53
Thanks!

The first one was really tricky.  Didn't know why it has to be set temp here again but that's great.

The 2nd one was actually to have the fifth column re-written by joblevel.

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2026-1-2 17:56