全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
2215 7
2019-10-02
来自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:
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结果
这是为什么? dsd选项不是已经将逗号设置为分隔符了吗?为什么course_name还会讲分隔符读作数据值的一部分?
求助论坛的各位大神们~有没有人可以给出比较详细一点的代码解读呢~




二维码

扫码加我 拉你入群

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

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

全部回复
2019-10-2 08:23:15
抱歉刚开始由于复制的时候忘记改格式    导致Course_name 和 Instructor 前的符号未正确显示,第一次用帖都不知道怎么编辑   刚刚调整好~
二维码

扫码加我 拉你入群

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

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

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。
二维码

扫码加我 拉你入群

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

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

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 ...
非常感谢您的回复 不过我还是没有太清楚您的意思  您愿意再详细的阐述一下嘛?
二维码

扫码加我 拉你入群

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

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

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.;
二维码

扫码加我 拉你入群

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

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

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是管不到的。
二维码

扫码加我 拉你入群

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

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

点击查看更多内容…
栏目导航
热门文章
推荐文章

说点什么

分享

扫码加好友,拉您进群
各岗位、行业、专业交流群