请选择 进入手机版 | 继续访问电脑版
楼主: Lesoleil_liv
1765 7

[问答] SAS中missover选项相关代码求解答 [推广有奖]

  • 0关注
  • 0粉丝

等待验证会员

初中生

23%

还不是VIP/贵宾

-

威望
0
论坛币
4 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
95 点
帖子
6
精华
0
在线时间
20 小时
注册时间
2019-10-2
最后登录
2021-6-21

Lesoleil_liv 发表于 2019-10-2 08:17:42 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
来自SAS小白的求助~
missover数据集内容:
PM01,SAS Base Programming,22,Greg William
PM02,SAS Advanced Programming
TM01,SAS Text Mining,8,Kevin Wynne
SY05,SAS System Administration,12,Jenny Hagen
代码1:
data missover;
infile exfiles(missover) dsd missover;
length Course_name
$30  Instructor $20;
input Course_id
$  Course_name $  Attendee  Instructor $;
title “table1”;
proc print data=missover;
run;
能够运行出正确的结果:见table1

代码2结果

代码2结果

但是稍微改动一下
代码2:
data missover;
infile exfiles(missover) dsd missover;
input Course_id
$  Course_name $30.  Attendee  Instructor $20.;
title “table2”;
proc print data=missover;
run;
则无法运行出正确结果:见table2

代码1结果

代码1结果

这是为什么? dsd选项不是已经将逗号设置为分隔符了吗?为什么course_name还会讲分隔符读作数据值的一部分?
求助论坛的各位大神们~有没有人可以给出比较详细一点的代码解读呢~




二维码

扫码加我 拉你入群

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

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


已有 1 人评分经验 收起 理由
eijuhz + 20 鼓励积极发帖讨论

总评分: 经验 + 20   查看全部评分

Lesoleil_liv 发表于 2019-10-2 08:23:15 |显示全部楼层 |坛友微信交流群
抱歉刚开始由于复制的时候忘记改格式    导致Course_name 和 Instructor 前的符号未正确显示,第一次用帖都不知道怎么编辑   刚刚调整好~

使用道具

l1i2n3i4n5g 在职认证  发表于 2019-10-8 09:40:32 |显示全部楼层 |坛友微信交流群
The DSD option changes how SAS treats delimiters when you use LIST input and sets the default delimiter to a comma.
所以只有LIST input时,才会发生你所想的结果。而这里涉及formatted list。
已有 1 人评分经验 收起 理由
eijuhz + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

使用道具

Lesoleil_liv 发表于 2019-10-25 12:03:02 |显示全部楼层 |坛友微信交流群
l1i2n3i4n5g 发表于 2019-10-8 09:40
The DSD option changes how SAS treats delimiters when you use LIST input and sets the default delimi ...
非常感谢您的回复 不过我还是没有太清楚您的意思  您愿意再详细的阐述一下嘛?

使用道具

l1i2n3i4n5g 在职认证  发表于 2019-10-25 14:52:01 |显示全部楼层 |坛友微信交流群
Lesoleil_liv 发表于 2019-10-25 12:03
非常感谢您的回复 不过我还是没有太清楚您的意思  您愿意再详细的阐述一下嘛?
    The following is an example of a simple list-style INPUT statement:
INPUT Name $ Age Height;
    Here is a simple column-style INPUT statement:
INPUT Name $ 1-10 Age 11-13 Height 14-18;
    Here is an INPUT statement using formatted input:
INPUT Name $10. Age 3. Height 5.1 BirthDate MMDDYY10.;
已有 1 人评分经验 收起 理由
eijuhz + 20 精彩帖子

总评分: 经验 + 20   查看全部评分

使用道具

luciangele 发表于 2019-11-1 06:46:56 |显示全部楼层 |坛友微信交流群
简单来说就是你修改后,input statement里面 写了 “Course_name $30. ” 这个是format input,也就是用你给出的$30. format去读数据,放到course_name里面,$30. 是character type format,也就是读30位字母,所以整个内容都被包括进去了。

另外input statement里可以混用各种input方式,包括list, column 和format。
dsd只是在list input里面帮助设置delimiter为comma,连续2个delimiter会添加missing value,已经帮助去掉value里面的引号。
但是对于course_name, 你给出的指示是format input,所以dsd是管不到的。

使用道具

Lesoleil_liv 发表于 2019-11-5 13:38:26 |显示全部楼层 |坛友微信交流群
l1i2n3i4n5g 发表于 2019-10-25 14:52
The following is an example of a simple list-style INPUT statement:
INPUT Name $ Age Height;
...
噢噢噢明白了   非常感谢您的回复

使用道具

Lesoleil_liv 发表于 2019-11-5 13:48:06 |显示全部楼层 |坛友微信交流群
luciangele 发表于 2019-11-1 06:46
简单来说就是你修改后,input statement里面 写了 “Course_name $30. ” 这个是format input,也就是用你给 ...
噢噢噢明白了  您的解答很清楚  非常感谢噢~

使用道具

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

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

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

GMT+8, 2024-4-19 02:30