全部版块 我的主页
论坛 数据科学与人工智能 数据分析与数据科学 SAS专版
1448 5
2019-09-29
如题,比如想要将2019-06-30转换为2019.50,sas程序语句如下:

x=2019-06-30
x1=year(x);
x2=month(x);
x3=day(x);

if x2<12 then m=x1+x2/12+x3/365.25;
else m=x1+1-(31-x3)/365.25;

这样m就换算成小数形式。

这种做法是否正确?有没有函数语句直接可以生成?
二维码

扫码加我 拉你入群

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

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

全部回复
2019-9-30 14:55:54
不正确,m=1960+(x+1)/365.25;
二维码

扫码加我 拉你入群

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

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

2019-10-11 12:37:24
l1i2n3i4n5g 发表于 2019-9-30 14:55
不正确,m=1960+(x+1)/365.25;
x+1是日期上+1,这是什么意思?
二维码

扫码加我 拉你入群

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

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

2019-10-11 12:56:44
l1i2n3i4n5g 发表于 2019-9-30 14:55
不正确,m=1960+(x+1)/365.25;
修改了一下程序,
x=2019-06-30
x1=year(x);
x2=month(x);
x3=day(x);

m=x1+(x2-1)/12+x3/365.25;
计算结果和您给出的方法比对了一下,稍大于您给出的方法,差值体现在第3位小数上, 1570769762(1).jpg
(左边的是按照我的方法,右边的是按照你的算法)

这种算法是不是有什么问题呢?

二维码

扫码加我 拉你入群

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

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

2019-10-13 10:02:26
医念之间 发表于 2019-10-11 12:56
修改了一下程序,
x=2019-06-30
x1=year(x);
改完就对了,只要你不介意不同月份不同天数。0相当于1960年1月1日,但其实已经是1960年的第1天,以此类推,所以就有了我的公式。
二维码

扫码加我 拉你入群

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

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

2019-10-14 12:51:47
l1i2n3i4n5g 发表于 2019-10-13 10:02
改完就对了,只要你不介意不同月份不同天数。0相当于1960年1月1日,但其实已经是1960年的第1天,以此类推 ...
好的,非常感谢!
二维码

扫码加我 拉你入群

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

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

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

说点什么

分享

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