楼主: ihust
1702 4

[问答] 导入日期问题 [推广有奖]

  • 3关注
  • 2粉丝

已卖:315份资源

博士生

46%

还不是VIP/贵宾

-

威望
0
论坛币
10339 个
通用积分
0.0600
学术水平
2 点
热心指数
3 点
信用等级
2 点
经验
2767 点
帖子
247
精华
0
在线时间
159 小时
注册时间
2012-4-29
最后登录
2016-9-8

楼主
ihust 发表于 2013-9-4 15:58:25 |AI写论文
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、有冒号, ...
关键词:infile format Input FORMA stkcd 程序

沙发
boe 发表于 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,加冒号(指字符和时间)最保险,除非原文件可以列读入。
多多指教
Gorgeous girl , I love !

藤椅
NoHL 发表于 2013-9-4 16:16:16
yymmdd 这个是日期格式 告诉程序日期格式是年月日的。。

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

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

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

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