楼主: coelicolor
876 2

[问答] 小白求教一书上小程序出错--format [推广有奖]

  • 0关注
  • 0粉丝

硕士生

30%

还不是VIP/贵宾

-

威望
0
论坛币
82 个
通用积分
22.9104
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
14798 点
帖子
159
精华
0
在线时间
90 小时
注册时间
2017-5-3
最后登录
2018-8-24

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
libname xudata1  "C:\Users\XXXXXX\Documents\My SAS Files\data";
Data xudata1.Set_SURVEY;

input ID $ Gender $ Age Salary Ques1 Ques2 Ques3 Ques4 Ques5;
datalines;
001 M 23 28000 1 2 1 2 3
002 F 55 76123 4 5 2 1 1
003 M 38 36500 2 2 2 2 1
004 F 67 128000 5 3 2 2 4
005 M 22 23060 3 3 3 4 2
006 M 63 90000 2 3 5 4 3
007 F 45 76100 5 3 4 3 3
;
RUN;
proc format;
value $Gender 'M' = 'Male'
               'F' = 'Female'
               ' ' = 'Not entered'
               other = 'Miscoded';
value age low- 29 = 'Less than 30'
          30-50 = '30 to 50'
          51-high = '51+';
value $likert '1' = 'Strongly disagree'
               '2' = 'Disagree'
               '3' = 'No opinion'
               '4' = 'Agree'
               '5' = 'Strongly agree';

run;
title "Data Set SURVEY with Formatted Values";
proc print data= xudata1.set_SURVEY;
id ID;
var Gender Age Salary Ques1-Ques5;
format Gender $gender.
Age age.
Ques1- Ques5 $likert.
Salary dollar11.2;
run;

红色部分出错,如果删除红色部分没问题,

求教是什么问题?

谢谢

二维码

扫码加我 拉你入群

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

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


沙发
foocares 发表于 2017-5-8 00:05:17 |只看作者 |坛友微信交流群
因为你的format定义和输入数据类型不匹配,ques1到ques5是数值型,format里又去按字符型定义。

Data xudata1;

input ID Gender $ Age Salary Ques1-Ques5;

datalines;
001 M 23 28000 1 2 1 2 3
002 F 55 76123 4 5 2 1 1
003 M 38 36500 2 2 2 2 1
004 F 67 128000 5 3 2 2 4
005 M 22 23060 3 3 3 4 2
006 M 63 90000 2 3 5 4 3
007 F 45 76100 5 3 4 3 3
;
RUN;
proc format;
value $gender 'M' = 'Male'
               'F' = 'Female'
               ' ' = 'Not entered'
               other = 'Miscoded';
value age low- 29 = 'Less than 30'
          30-50 = '30 to 50'
          51-high = '51+';
value likert 1 = 'Strongly disagree'
             2 = 'Disagree'
             3 = 'No opinion'
             4 = 'Agree'
             5 = 'Strongly agree';

run;
title "Data Set SURVEY with Formatted Values";
proc print data= xudata1;
id ID;
var Gender Age Salary Ques1-Ques5;
format Gender $gender.
Age age.
Ques1- Ques5 likert.
Salary dollar11.2;
run;
这样都改成数值型就可以了,你试试。

使用道具

藤椅
coelicolor 发表于 2017-5-8 21:19:01 |只看作者 |坛友微信交流群
foocares 发表于 2017-5-8 00:05
因为你的format定义和输入数据类型不匹配,ques1到ques5是数值型,format里又去按字符型定义。

Data xud ...
多谢多谢,
我在原代码上改不行,拷贝你的可以,我要研究一下。

---找到了原因了,

感谢

使用道具

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

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

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

GMT+8, 2024-4-25 00:05