楼主: gqm2008
11665 19

sas中如何修改variable的format [推广有奖]

  • 2关注
  • 1粉丝

大专生

11%

还不是VIP/贵宾

-

威望
0
论坛币
7 个
通用积分
0
学术水平
0 点
热心指数
0 点
信用等级
0 点
经验
165 点
帖子
41
精华
0
在线时间
33 小时
注册时间
2011-7-26
最后登录
2013-10-13

楼主
gqm2008 发表于 2011-7-26 17:15:47 |AI写论文

+2 论坛币
k人 参与回答

经管之家送您一份

应届毕业生专属福利!

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

经管之家联合CDA

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

感谢您参与论坛问题回答

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

+2 论坛币
如题,我现在手中有的数据在sas中显示为2.0100101E13 类似这样的格式,貌似是科学计数法的表示方式

其实这是一个日期+时间的数据,例如2010(yyyy)0101(mmdd)195637(19:56分37秒)

我现在想将其全部变成日期的数据

自己的想法是先将 科学计数法 的那个格式转变为 20100101195637 这样,然后保留其中的mm/dd 这几位

最终的目的是将这列数据作为时间轴作图,不需要精确到分钟和秒, 而且是一年的数据,所以2010也不需要。

有朋友说用sub string来处理。

因为本人刚接触sas,是个新手,希望大家能给予指教,求代码。

非常感谢!
二维码

扫码加我 拉你入群

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

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

关键词:Variable format FORMA form ABLE SAS Variable format

example.png (215.08 KB)

example.png

回帖推荐

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

可以试一下这个:这样会修改掉xact_date的值。 data sdate006; set sdate006; _mmdd=substr(strip(put(xact_date,best14.)),5,4); xact_date=input(_mmdd,4.); format xact_date z4.; drop _mmdd; run;

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

data sdate006; set sdate006; _mmdd=substr(strip(put(xact_date,best14.)),3,6); xact_date=input(_mmdd,4.); format xact_date z4.; drop _mmdd; run;

本帖被以下文库推荐

沙发
pobel 在职认证  发表于 2011-7-26 17:32:50
data test;
   input num;
   mmdd=substr(strip(put(num,best14.)),5,4);
   put mmdd=;

   cards;
2.0100101E13
2.0100709E13
;
run;
已有 1 人评分论坛币 学术水平 热心指数 收起 理由
liuzhenzhu + 30 + 2 + 2 热心帮助其他会员

总评分: 论坛币 + 30  学术水平 + 2  热心指数 + 2   查看全部评分

和谐拯救危机

藤椅
gqm2008 发表于 2011-7-26 23:48:17
非常感谢,忘了说,这个variable的名称是date,如果我要讲所有这些date下面的格式都改掉,上面这段代码应该如何修改呢?

板凳
pobel 在职认证  发表于 2011-7-27 07:20:46
是要将date的值都改掉么?

data test;
   input date;
   mmdd=substr(strip(put(date,best14.)),5,4);
   date=input(mmdd,4.);
   format date z4.;
   cards;
2.0100101E13
2.0100709E13
1.9991213E13
;
run;
和谐拯救危机

报纸
jasonscut 在职认证  发表于 2011-7-27 12:04:21
你要不要先试一下:
format date date9.;

我怀疑你那个date显示的是一个数值,多少秒(在正常情况下if you don't specify format)。
北美统计金融博士

地板
gqm2008 发表于 2011-7-27 12:22:24
嗯,不知道我说清楚了没,就是这个variable的名称叫xact_date, 我希望把这个variable下面大概几千个数据都从原始的科学计数法那种表示形式,转换成mmdd的形式

7
gqm2008 发表于 2011-7-27 12:26:06
pobel 发表于 2011-7-27 07:20
是要将date的值都改掉么?

data test;
   input date;
   mmdd=substr(strip(put(date,best14.)),5,4);
   date=input(mmdd,4.);
   format date z4.;
   cards;
2.0100101E13
2.0100709E13
1.9991213E13
;
run;
cards那个语句是要将数据都复制下来么?我希望直接修改,要不我上个附件会不会有帮助?

8
gqm2008 发表于 2011-7-27 12:45:33
已经上图,麻烦帮忙看下,谢谢,如果不够确切我截一段小数据上来试试

9
gqm2008 发表于 2011-7-27 12:48:44
4# pobel

已经上图,如果是这样的情况应该怎么办呢

10
pobel 在职认证  发表于 2011-7-27 13:41:11
可以试一下这个:这样会修改掉xact_date的值。
data sdate006;
   set sdate006;
   _mmdd=substr(strip(put(xact_date,best14.)),5,4);
   xact_date=input(_mmdd,4.);
   format xact_date z4.;
   drop _mmdd;
run;
已有 1 人评分经验 论坛币 收起 理由
bakoll + 3 + 3 精彩帖子

总评分: 经验 + 3  论坛币 + 3   查看全部评分

和谐拯救危机

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

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