请选择 进入手机版 | 继续访问电脑版
楼主: 肝贝
2260 8

微妙的时间格式~~ [推广有奖]

  • 12关注
  • 1粉丝

幸儿

博士生

38%

还不是VIP/贵宾

-

威望
0
论坛币
675 个
通用积分
1.0042
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
186 点
帖子
156
精华
0
在线时间
264 小时
注册时间
2013-11-9
最后登录
2019-11-19

肝贝 发表于 2015-3-27 22:55:36 |显示全部楼层 |坛友微信交流群
相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
data a1;

input date1 yymmdd10. date2 yymmdd10.;
format date1 yymmdd10. date2 yymmdd10.;
days1=datdif(date1,date2,'act/act');/*按实际*/
days2=datdif(date1,date2,'30/60');/*每个月30天*/
datalines;
2015-01-01 20150214
2014-05-25 20140621
;

proc print ;
run;

data a2;

input date1 yymmdd10. date2 yymmdd10.;
format date1 yymmdd10. date2 yymmdd10.;
days1=datdif(date1,date2,'act/act');/*按实际*/
days2=datdif(date1,date2,'30/60');/*每个月30天*/
put date1= date2=;
datalines;
2015-01-01 2015-02-14
2014-05-25 2014-06-21
;

proc print ;
run;

data a2;

input date1 : yymmdd10.  date2 : yymmdd10.;
format date1 yymmdd10. date2 yymmdd10.;
days1=datdif(date1,date2,'act/act');/*按实际*/
days2=datdif(date1,date2,'30/60');/*每个月30天*/
put date1= date2=;
datalines;
2015-01-01 2015-02-14
2014-05-25 2014-06-21
;

proc print ;
run;

这是三段代码,菜鸟想问为什么a1中date2加入‘-’(如a2)所示,结果就不一样了?如果将a1中date1的读入格式换为一样yymmdd8.读入数据会发生错误,这是什么原因造成的?解决方案可以如a3所示,菜鸟求大牛讲解为什么,拜谢~~

二维码

扫码加我 拉你入群

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

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

关键词:format FORMA Lines Input print

I'll never let go.
382220827 发表于 2015-3-28 10:08:02 |显示全部楼层 |坛友微信交流群
20150214 对应的格式应该是yymmddn8.

使用道具

肝贝 发表于 2015-3-28 17:32:37 |显示全部楼层 |坛友微信交流群
382220827 发表于 2015-3-28 10:08
20150214 对应的格式应该是yymmddn8.
您试试。。这个格式读入不进去。。。。

使用道具

382220827 发表于 2015-3-29 11:12:35 |显示全部楼层 |坛友微信交流群
肝贝 发表于 2015-3-28 17:32
您试试。。这个格式读入不进去。。。。
是我想当然并且误导你了,我接触sas也没多长时间,看下面语句吧
data ABC;
input date1 : yymmdd.;
date2=put(date1,yymmddn8.);
cards;
20150329
20150401
20150402
20150403
;
run;

使用道具

肝贝 发表于 2015-3-29 18:43:29 |显示全部楼层 |坛友微信交流群
382220827 发表于 2015-3-29 11:12
是我想当然并且误导你了,我接触sas也没多长时间,看下面语句吧
data ABC;
input date1 : yymmdd.;
可能我表述不清,其实这里的三段代码都能导入数据,我的问题是:为什么第一段代码导入数据的结果和另外两段代码不一样~~

使用道具

382220827 发表于 2015-3-29 21:35:09 |显示全部楼层 |坛友微信交流群
哦明白意思了,我们共同探讨探讨啊。我认为如果你给输入的数据指定了一个n.的长度,那么它会读入n长的数据,直到遇到空格停止,此时指针停留在空格处......还是看如下语句吧
data abc;
input x 2. y 3.;
datalines;
1234567
1 234567
12 34567
;
run;
1.PNG


使用道具

肝贝 发表于 2015-3-30 21:31:15 |显示全部楼层 |坛友微信交流群
382220827 发表于 2015-3-29 21:35
哦明白意思了,我们共同探讨探讨啊。我认为如果你给输入的数据指定了一个n.的长度,那么它会读入n长的数据, ...
您能解释一下 date2加‘-’ 按照yymmdd10.读入的时候 为什么一个差13天 一个差19天吗?

使用道具

teqel 发表于 2015-3-30 23:42:23 |显示全部楼层 |坛友微信交流群
应该是
days2=datdif(date1,date2,'30/360');
你敲错了

使用道具

肝贝 发表于 2015-3-31 12:52:06 |显示全部楼层 |坛友微信交流群
teqel 发表于 2015-3-30 23:42
应该是
days2=datdif(date1,date2,'30/360');
你敲错了
date2 读入的时候 就有题,在运行这三段代码之后,仔细观察结果 就能发现

使用道具

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

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

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

GMT+8, 2024-3-29 21:42