首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >读取表单515的SAS中的时间值为5:15

读取表单515的SAS中的时间值为5:15
EN

Stack Overflow用户
提问于 2017-09-10 16:48:36
回答 2查看 146关注 0票数 1

我有像515这样的时间值的变量,它应该读作5:15。为此,我使用了以下代码-

代码语言:javascript
运行
复制
data flights;
set cs.flights;
format sched_dep_time hhmm. dep_time hhmm. ;
run;

但我得到515的结果为0.09,我认为这是从凌晨12:00开始计算的时间,以秒为单位。我也用时间。格式化,但没有用。我该如何处理这件事?

EN

回答 2

Stack Overflow用户

发布于 2017-09-10 17:36:57

格式仅更改值的显示方式。在这种情况下,我们需要更改实际值,使其表示自午夜以来的秒数。

使用以下方法(以及请求的time_diff ):

代码语言:javascript
运行
复制
data flights;
  sched_dep_time=515;
  dep_time=1215;
  format sched_dep_time dep_time time_diff hhmm. ;
  sched_dep_time=hms(round(sched_dep_time,100)/100
    ,mod(sched_dep_time,100),0);
  dep_time=hms(round(dep_time,100)/100
    ,mod(dep_time,100),0);  
  time_diff=sched_dep_time-dep_time;
  put (_all_)(=);
run;

提供:

代码语言:javascript
运行
复制
sched_dep_time=5:15 dep_time=12:15 time_diff=-7:00
票数 1
EN

Stack Overflow用户

发布于 2017-09-10 19:23:27

正如您所建议的,SAS将时间值存储为自午夜以来的秒数。因此,值515是午夜后的515秒。要获得表示05:15的值,您需要进行一些转换。

SAS具有用于读取字符数据的输入功能,您可以指定数据的格式。这允许用户读取字符值'0515‘,并将其转换为表示时间05:15的数字18900。

下面使用PUT函数将数值515转换为字符值'515',并使用输入函数将其转换为18900。时间格式使18900打印为05:15:00。

代码语言:javascript
运行
复制
data have;
  sched_dep_time=515;
  dep_time=1515;
run;

data want;
  set have;
  SchedDepTime=input(put(sched_dep_time,4.),hhmmss.);
  DepTime=input(put(dep_time,4.),hhmmss.);
  format SchedDepTime DepTime time.;
  put (Sched_Dep_Time SchedDepTime Dep_Time DepTime)(=);
run;

返回:

代码语言:javascript
运行
复制
sched_dep_time=515 SchedDepTime=5:15:00 dep_time=1515 DepTime=15:15:00
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/46138885

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档