楼主: 医念之间
1223 5

[问答] SAS如何将日期型变量转换为带小数点的值? [推广有奖]

  • 1关注
  • 0粉丝

本科生

46%

还不是VIP/贵宾

-

威望
0
论坛币
126 个
通用积分
11.8135
学术水平
0 点
热心指数
1 点
信用等级
0 点
经验
1170 点
帖子
27
精华
0
在线时间
150 小时
注册时间
2017-10-23
最后登录
2024-3-27

相似文件 换一批

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,比如想要将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就换算成小数形式。

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

扫码加我 拉你入群

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

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

关键词:变量转换 小数点 日期型 month sas程序 日期型转换

已有 1 人评分经验 收起 理由
eijuhz + 20 鼓励积极发帖讨论

总评分: 经验 + 20   查看全部评分

沙发
l1i2n3i4n5g 在职认证  发表于 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
(左边的是按照我的方法,右边的是按照你的算法)

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

使用道具

报纸
l1i2n3i4n5g 在职认证  发表于 2019-10-13 10:02:26 |只看作者 |坛友微信交流群
医念之间 发表于 2019-10-11 12:56
修改了一下程序,
x=2019-06-30
x1=year(x);
改完就对了,只要你不介意不同月份不同天数。0相当于1960年1月1日,但其实已经是1960年的第1天,以此类推,所以就有了我的公式。
已有 1 人评分论坛币 学术水平 热心指数 信用等级 收起 理由
admin_kefu + 30 + 3 + 3 + 3 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 3  热心指数 + 3  信用等级 + 3   查看全部评分

使用道具

地板
医念之间 发表于 2019-10-14 12:51:47 |只看作者 |坛友微信交流群
l1i2n3i4n5g 发表于 2019-10-13 10:02
改完就对了,只要你不介意不同月份不同天数。0相当于1960年1月1日,但其实已经是1960年的第1天,以此类推 ...
好的,非常感谢!

使用道具

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

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

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

GMT+8, 2024-4-25 23:17