全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1654 4
2013-09-04
悬赏 10 个论坛币 已解决
问题:我想导入如下文本数据到SAS(已存为d:\data.txt).

2002    1998-7-10    100624080
2002    1998-7-14    110686500
2002    1998-7-15    110686488
2002    1998-12-2    110686488
2002    1999-8-6    110686488
2002    1999-8-10    121755136
2002    2000-2-16    121755136


我用如下程序可以成功导入:
data ts;        
        infile 'd:\data.txt' ;
        input astkcd    date:yymmdd10.    fullshrs ;
        format date yymmdd10.;
run;


我的疑问是,程序中为什么date之后要用冒号格式修饰符呢?去掉冒号格式修饰符就不能成功导入了,这是为什么呢?

最佳答案

boe 查看完整内容

data ts; input astkcd date yymmdd10. fullshrs $9.; format date yymmdd10.; datalines; 2002 1998-7-10 100624080 20021999-18-10 121755136 2002 1999-18-10 121755136 2002 1999-8-10 121755136 2002 2000-2-16 121755136 ; run; ================== 1、没有冒号,默认分隔符为一个空格。读完一个变量的之后,跳过一个空格,读下一个变量的值。 2、有冒号, ...
二维码

扫码加我 拉你入群

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

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

全部回复
2013-9-4 15:58:26
data ts;            
        input astkcd    date yymmdd10.    fullshrs $9.;
        format date yymmdd10.;
datalines;
2002    1998-7-10    100624080
20021999-18-10    121755136
2002  1999-18-10    121755136
2002 1999-8-10    121755136
2002 2000-2-16 121755136
;
run;
==================
1、没有冒号,默认分隔符为一个空格。读完一个变量的之后,跳过一个空格,读下一个变量的值。
2、有冒号,可以把之前多个连续的空格看做一个分隔符。
3、即使在上述date变量后加冒号,但最后一个变量还是读不出来,因为我指定了它为字符型。
4、解决3的问题,可以在fullshrs之后加冒号,或把它设为数值型,数值型SAS默认读很多位的,从而忽略空格。
结论:此类input,加冒号(指字符和时间)最保险,除非原文件可以列读入。
多多指教
二维码

扫码加我 拉你入群

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

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

2013-9-4 16:16:16
yymmdd 这个是日期格式 告诉程序日期格式是年月日的。。
二维码

扫码加我 拉你入群

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

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

2013-9-4 16:54:05
NoHL 发表于 2013-9-4 16:16
yymmdd 这个是日期格式 告诉程序日期格式是年月日的。。
如果不加冒号不也是告诉它是年月日的吗?
二维码

扫码加我 拉你入群

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

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

2013-9-5 21:56:25
boe 发表于 2013-9-4 15:58
data ts;            
        input astkcd    date yymmdd10.    fullshrs $9.;
        format date  ...
谢谢
二维码

扫码加我 拉你入群

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

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

相关推荐
栏目导航
热门文章
推荐文章

说点什么

分享

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