楼主: playmore
16824 8

请问如何将原始为数值型的变量转为日期型 [推广有奖]

已卖:1645份资源

学科带头人

2%

还不是VIP/贵宾

-

TA的文库  其他...

R相关

经济学相关

金融工程

威望
1
论坛币
16356 个
通用积分
8.6697
学术水平
372 点
热心指数
394 点
信用等级
341 点
经验
15297 点
帖子
1194
精华
1
在线时间
1332 小时
注册时间
2007-1-11
最后登录
2025-12-1

初级学术勋章 初级热心勋章 中级热心勋章

楼主
playmore 发表于 2012-9-17 12:43:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
我的问题是原始的数据库里有一个Date变量,为11.的数值型,形如20120304
我想把它变为日期型,如yymmdd10.,形如2012-03-04

坛子里有这样的问题,链接如下:
https://bbs.pinggu.org/thread-539216-1-1.html

这个贴子里jingju的回答如下所示:
data new;
input date yymmdd8.;
format date date.;
datalines;
20010101
20020305
;
run;

但问题是我这里的数据库是现成的,不是用data步生成的,也就是说初始的date变量没有按yymmdd8. input进去,也即把上面的代码改成如下之后,会出现错误
data new;
input date 11.;
format date date.;
datalines;
20010101
20020305
;
run;

请问该如何解决这个问题,谢谢!
二维码

扫码加我 拉你入群

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

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

关键词:日期型 数值型 format thread pinggu 如何

回帖推荐

pobel 发表于3楼  查看完整内容

这样? data new; input date 11.; date_1=mdy(mod(int(date/100),100),mod(date,100),int(date/10000)); format date_1 yymmdd10.; put date_1 yymmdd10.; datalines; 20010101 20020305 ; run;

本帖被以下文库推荐

playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

沙发
playmore 发表于 2012-9-17 13:43:56
上面可能没有把问题说清,简单来说就是数值型的20120305,意义为2012年3月5号
但是在SAS中同样的日期的数值型表示为18034之类的数值
我的问题是如何把数值型的日期20120305转换成SAS内部的18034数值型日期,以用于以后的日期函数操作

我现在的办法是先把数值型的20120305转换为字符型的
再用input转为数值型的,且规定informat为yymmdd8.
这样虽能解决问题,但是显得比较麻烦
求更简单的方法,谢谢!
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

藤椅
pobel 在职认证  发表于 2012-9-17 13:48:25
这样?

data new;
input date 11.;
date_1=mdy(mod(int(date/100),100),mod(date,100),int(date/10000));
format date_1 yymmdd10.;
put date_1 yymmdd10.;
datalines;
20010101
20020305
;
run;
已有 2 人评分经验 论坛币 学术水平 热心指数 信用等级 收起 理由
bakoll + 3 + 3 精彩帖子
playmore + 1 + 1 + 1 观点有启发

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

和谐拯救危机

板凳
playmore 发表于 2012-9-17 16:19:42
pobel 发表于 2012-9-17 13:48
这样?

data new;
嗯,这个办法好
多谢了
playmore邀请您访问ChinaTeX论坛!!!进入ChinaTeX论坛

报纸
chenchengzhi22 发表于 2013-2-26 02:28:35
pobel 发表于 2012-9-17 13:48
这样?

data new;
大神好解答,学习了:)

地板
goodbyeershi 发表于 2013-5-23 13:40:00
太牛了,解决了大问题。谢谢

7
龙博士 发表于 2014-5-13 08:59:39
如果有个SAS文件,不用datalines该如何操作呢?

8
farmman60 发表于 2014-5-13 09:52:35
  1. data new;
  2. input date 11.;
  3. date_1=input(put(date,z8.),yymmdd10.);
  4. format date_1  yymmdd10. ;
  5. datalines;
  6. 20010101
  7. 20020305
  8. ;
  9. run;
复制代码

9
wsyxh 发表于 2014-5-13 12:45:22
假如示例数据存在Old数据集
data old;
input date;
cards;
19840123
20010101
20020305
;
run;

采用下面的语句建立新数据集new,即可转换为日期类型
data new;
set old;
date = input(put(date,z8.),yymmdd10.);
format date yymmdd10.;
run;

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

本版微信群
加好友,备注cda
拉您进交流群
GMT+8, 2025-12-31 05:15