【问题标题】:Convert hh:mm:ss format in seconds in SAS language?用 SAS 语言在几秒钟内转换 hh:mm:ss 格式?
【发布时间】:2020-04-09 03:19:16
【问题描述】:

我在学校被要求做的是将 ElapsedTime 格式为 0:01:27.000 的变量列转换为名为 seconds 的新列。所以0:01:27.000 => 87 在我的任务中,他们建议使用函数input 我找不到任何东西让它工作。

【问题讨论】:

  • 这取决于是字符还是数值。如果它是字符变量,则需要使用 INPUT() 作为通过数据 null 显示的方式,但是,如果它是数字变量,则需要删除格式。

标签: sql input sas dataset


【解决方案1】:

时间格式

35         data _null_;
36            x = '0:01:27.000';
37            y = input(x,time16.);
38            put _all_;
39            run;

x=0:01:27.000 y=87 _ERROR_=0 _N_=1

【讨论】:

  • 这适用于一个数据,但不适用于变量的所有数据??
  • ?? @gregouz1995 如果您提供更多详细信息,您将获得更好的帮助。
  • 这是示例代码。您需要将 X 替换为您的变量,并将其指向数据步骤中的数据集。
【解决方案2】:

那么你想要这样的东西:

data want; *output data;
set have; *input data;

time_sas = input(oldVar, time16.); *does the conversion;

run;

【讨论】:

    【解决方案3】:

    如果ElapsedTime是字符变量,那么你应该使用input函数和time16.格式:

    data have;/*init sample data*/
       ElapsedTime = '0:01:27.000';
    run;
    
    data want;/*create new dataset with new variable "seconds"*/
       set have;/*your dataset name instead of "have"*/
       seconds = input(ElapsedTime,time16.);
       put _all_;
    run;
    

    ElapsedTime=0:01:27.000 秒=87 错误=0 N=1

    但如果ElapsedTime 是格式为time16. 的数字变量,那么您应该将格式更改为best.

    data want;/*init sample data*/
      format ElapsedTime time16.;
      ElapsedTime = '0:01:27.000't;
    run;
    
    data want;/*create new dataset with new variable "seconds"*/
       set have;/*your dataset name instead of "have"*/
       seconds = input(ElapsedTime,best.);
       put _all_;
    run;
    

    ElapsedTime=0:01:27 秒=87 错误=0 N=1

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-04-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2022-11-23
      • 2022-11-28
      相关资源
      最近更新 更多