如何格式化日期以在 SAS 中使用? [英] How to format dates for use in SAS?

查看:51
本文介绍了如何格式化日期以在 SAS 中使用?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试采用本文中的方法 4 来计算许多观察的持续时间,但不考虑重叠日期:

谁能帮我正确格式化我的日期以便在此处使用,或找出任何进一步的错误?

第 80 行指的是 do xdate = startdate to stopdate;.

我仍然无法将日期变量转换或创建为数字/日期值.我使用了以下代码:

data sasuser.Mdm;设置 sasuser.Mdm;做 xdate = input(Startdate,yymmdd10.) to input(stopdate,yymmdd10.);把 xdate= yymmdd10.;输出;结尾;跑步;

要获得此输出:

1 数据 sasuser.Mdm;2 套 sasuser.Mdm;3 做 xdate = input(Startdate,yymmdd10.) to input(stopdate,yymmdd10.);4 把 xdate=yymmdd10.;5个输出;6 结束;7 运行;xdate=2017-03-02xdate=2017-03-03xdate=2017-03-04xdate=2017-03-05xdate=2017-03-06xdate=2017-03-07xdate=2017-03-08xdate=2017-03-09xdate=2017-03-10xdate=2017-03-11xdate=2017-03-12xdate=2017-03-13xdate=2017-03-14xdate=2017-03-15xdate=2017-03-16xdate=2017-03-04xdate=2017-03-05xdate=2017-03-06xdate=2017-03-07xdate=2017-03-08xdate=2017-03-09xdate=2017-03-10xdate=2017-03-11xdate=2017-03-12xdate=2017-03-13xdate=2017-03-14xdate=2017-03-15xdate=2017-03-16xdate=2017-03-17xdate=2017-03-07xdate=2017-03-08xdate=2017-03-09xdate=2017-03-10xdate=2017-03-11xdate=2017-03-12xdate=2017-03-13xdate=2017-03-14xdate=2017-03-15xdate=2017-03-16xdate=2017-03-17xdate=2017-03-18xdate=2017-03-19xdate=2017-03-20xdate=2017-03-21xdate=2017-02-08xdate=2017-02-09xdate=2017-02-10xdate=2017-02-11xdate=2017-02-12xdate=2017-02-13xdate=2017-02-14xdate=2017-02-15xdate=2017-02-16xdate=2017-02-17xdate=2017-02-18xdate=2017-02-19xdate=2017-02-20xdate=2017-02-21xdate=2017-02-22xdate=2017-02-23xdate=2017-02-24xdate=2017-02-23xdate=2017-02-24xdate=2017-02-25xdate=2017-02-26xdate=2017-02-27xdate=2017-02-28xdate=2017-03-01xdate=2017-03-02xdate=2017-03-03xdate=2017-03-04xdate=2017-03-05xdate=2017-03-06xdate=2017-03-07xdate=2017-03-08xdate=2017-02-26xdate=2017-02-28xdate=2017-03-13xdate=2017-03-17xdate=2017-03-25xdate=2017-03-28xdate=2017-03-23xdate=2017-03-24xdate=2017-03-25xdate=2017-03-26xdate=2017-03-27xdate=2017-03-28xdate=2017-03-29xdate=2017-03-30xdate=2017-03-29xdate=2017-04-03xdate=2017-04-04xdate=2017-04-03xdate=2017-04-04xdate=2017-04-05xdate=2017-04-05xdate=2017-04-06xdate=2017-04-06xdate=2017-04-07xdate=2017-03-25xdate=2017-03-26xdate=2017-03-30xdate=2017-04-01xdate=2017-04-02xdate=2017-04-03xdate=2017-04-04xdate=2017-04-08xdate=2017-04-09xdate=2017-04-10xdate=2017-04-11xdate=2017-04-12xdate=2017-04-12xdate=2017-04-13xdate=2017-04-13xdate=2017-04-14xdate=2017-04-15xdate=2017-04-16xdate=2017-04-17xdate=2017-04-18xdate=2017-04-19xdate=2017-04-20xdate=2017-04-21xdate=2017-04-22xdate=2017-04-19xdate=2017-04-23xdate=2017-04-24xdate=2017-04-25xdate=2017-04-26xdate=2017-04-26xdate=2017-04-27xdate=2017-04-28xdate=2017-05-05xdate=2017-05-06xdate=2017-05-16xdate=2017-05-19xdate=2017-05-20xdate=2017-05-21xdate=2017-05-22xdate=2017-05-19xdate=2017-05-20xdate=2017-05-21xdate=2017-05-22xdate=2017-05-23xdate=2017-05-24xdate=2017-05-25xdate=2017-05-26xdate=2017-05-22xdate=2017-05-23xdate=2017-05-24xdate=2017-05-25xdate=2017-05-26xdate=2017-05-27xdate=2017-05-28xdate=2017-05-29xdate=2017-05-30xdate=2017-05-31xdate=2017-06-01xdate=2017-06-02xdate=2017-06-03xdate=2017-06-04xdate=2017-06-05xdate=2017-06-06xdate=2017-06-07xdate=2017-06-08xdate=2017-06-09xdate=2017-06-10xdate=2017-06-11xdate=2017-06-12xdate=2017-06-13xdate=2017-06-14xdate=2017-06-15xdate=2017-06-16xdate=2017-06-17xdate=2017-06-18xdate=2017-06-19xdate=2017-06-20xdate=2017-06-21xdate=2017-06-22xdate=2017-06-23xdate=2017-06-24xdate=2017-06-25xdate=2017-06-26xdate=2017-06-27xdate=2017-06-28xdate=2017-06-29xdate=2017-06-30xdate=2017-07-01xdate=2017-07-02xdate=2017-07-03xdate=2017-07-04xdate=2017-07-05xdate=2017-07-06xdate=2017-07-07xdate=2017-07-08xdate=2017-07-09xdate=2017-07-10xdate=2017-07-11xdate=2017-07-12xdate=2017-07-13xdate=2017-07-14xdate=2017-07-15xdate=2017-07-16xdate=2017-07-17xdate=2017-07-18xdate=2017-07-19xdate=2017-07-20xdate=2017-07-21xdate=2017-07-22xdate=2017-07-23xdate=2017-07-24xdate=2017-07-25xdate=2017-07-26xdate=2017-07-27xdate=2017-07-28xdate=2017-07-29xdate=2017-07-30xdate=2017-07-31xdate=2017-08-01xdate=2017-08-02xdate=2017-08-03xdate=2017-08-04xdate=2017-08-05xdate=2017-08-06xdate=2017-08-07xdate=2017-08-08xdate=2017-08-09xdate=2017-08-10xdate=2017-08-11xdate=2017-08-12xdate=2017-08-13xdate=2017-08-14xdate=2017-08-15xdate=2017-08-16xdate=2017-08-17xdate=2017-08-18xdate=2017-08-19xdate=2017-08-20xdate=2017-08-21xdate=2017-08-22xdate=2017-08-23xdate=2017-08-24xdate=2017-08-25xdate=2017-08-26xdate=2017-08-27xdate=2017-08-28xdate=2017-08-29xdate=2017-08-30xdate=2017-08-31xdate=2017-09-01xdate=2017-05-27xdate=2017-05-28xdate=2017-05-29xdate=2017-05-30xdate=2017-05-31xdate=2017-06-01xdate=2017-06-02xdate=2017-06-03xdate=2017-06-04xdate=2017-06-05xdate=2017-06-06xdate=2017-06-07xdate=2017-06-08xdate=2017-06-09xdate=2017-06-10xdate=2017-06-11xdate=2017-06-12xdate=2017-06-13xdate=2017-06-14xdate=2017-06-15xdate=2017-06-16xdate=2017-06-17xdate=2017-06-18xdate=2017-06-19xdate=2017-06-20xdate=2017-06-21xdate=2017-06-22xdate=2017-06-23xdate=2017-06-24xdate=2017-06-25xdate=2017-06-26xdate=2017-06-27xdate=2017-06-28xdate=2017-06-29xdate=2017-06-30xdate=2017-07-01xdate=2017-07-02xdate=2017-07-03xdate=2017-07-04xdate=2017-07-05xdate=2017-07-06xdate=2017-07-07xdate=2017-07-08xdate=2017-07-09xdate=2017-07-10xdate=2017-07-11xdate=2017-07-12xdate=2017-07-13xdate=2017-07-14xdate=2017-07-15xdate=2017-07-16xdate=2017-07-17xdate=2017-07-18xdate=2017-07-19xdate=2017-07-20xdate=2017-07-21xdate=2017-07-22xdate=2017-07-23xdate=2017-07-24xdate=2017-07-25xdate=2017-07-26xdate=2017-07-27xdate=2017-07-28xdate=2017-07-29xdate=2017-07-30xdate=2017-07-31xdate=2017-08-01xdate=2017-08-02xdate=2017-08-03xdate=2017-08-04xdate=2017-08-05xdate=2017-08-06xdate=2017-08-07xdate=2017-08-08xdate=2017-08-09xdate=2017-08-10xdate=2017-08-11xdate=2017-08-12xdate=2017-08-13xdate=2017-08-14xdate=2017-08-15xdate=2017-08-16xdate=2017-08-17xdate=2017-08-18xdate=2017-08-19xdate=2017-08-20xdate=2017-08-21xdate=2017-08-22xdate=2017-08-23xdate=2017-08-24xdate=2017-08-25xdate=2017-08-26xdate=2017-08-27xdate=2017-08-28xdate=2017-08-29xdate=2017-08-30xdate=2017-08-31xdate=2017-09-01xdate=2017-06-14xdate=2017-06-15xdate=2017-06-16xdate=2017-06-17xdate=2017-06-18xdate=2017-06-19xdate=2017-06-20xdate=2017-06-21xdate=2017-06-22xdate=2017-06-23xdate=2017-06-24xdate=2017-06-25xdate=2017-06-26xdate=2017-06-27xdate=2017-06-28xdate=2017-06-29xdate=2017-06-14xdate=2017-06-15xdate=2017-06-16xdate=2017-06-17xdate=2017-06-18xdate=2017-06-19xdate=2017-06-20xdate=2017-06-21xdate=2017-06-22xdate=2017-06-23xdate=2017-06-24xdate=2017-06-25xdate=2017-06-26xdate=2017-06-27xdate=2017-06-28xdate=2017-06-29xdate=2017-03-27xdate=2017-04-02xdate=2017-04-07xdate=2017-04-08xdate=2017-04-09xdate=2017-04-13xdate=2017-04-14xdate=2017-04-15xdate=2017-04-16xdate=2017-04-17xdate=2017-04-19xdate=2017-04-20xdate=2017-04-21xdate=2017-04-22xdate=2017-04-23xdate=2017-04-24xdate=2017-04-20xdate=2017-04-21xdate=2017-04-22xdate=2017-04-23xdate=2017-04-24xdate=2017-04-25xdate=2017-04-26xdate=2017-04-27xdate=2017-04-28xdate=2017-04-29xdate=2017-04-30xdate=2017-05-01xdate=2017-05-02xdate=2017-04-24xdate=2017-04-25xdate=2017-04-26xdate=2017-04-27xdate=2017-04-28xdate=2017-04-29xdate=2017-04-30xdate=2017-05-01xdate=2017-05-02xdate=2017-05-03xdate=2017-05-04xdate=2017-05-05xdate=2017-05-06xdate=2017-05-07xdate=2017-05-08xdate=2017-05-09xdate=2017-05-10xdate=2017-05-11xdate=2017-05-12xdate=2017-05-13xdate=2017-05-14xdate=2017-05-15xdate=2017-05-16错误:无效的 DO 循环控制信息,缺少 INITIAL 或 TO 表达式或BY 表达式缺失、为零或无效.SUBJID=106 KEY=106-9 OBS=9 TOTAL=12 STARTDATE=2017-04-25 STOPDATE= CLASS=类固醇/利尿剂xdate=20934 _ERROR_=1 _N_=52注意:SAS 系统因错误而停止处理此步骤.注意:从数据集 SASUSER.MDM 中读取了 52 个观察值.警告:数据集 SASUSER.MDM 可能不完整.当这一步停止时,有 431观察值和 8 个变量.警告:数据集 SASUSER.MDM 未被替换,因为此步骤已停止.注意:使用的 DATA 语句(总处理时间):实时 0.38 秒cpu时间0.29秒```

我不明白为什么 input 似乎不起作用.日期仍作为字符串列在列属性下.do 部分也没有按预期工作.如有任何进一步指导,我将不胜感激.

解决方案

  1. 不要在 DATA 和 SET 语句中使用相同的名称.然后你总是不得不从头开始重建.
  2. 将您的开始和结束日期转换为 SAS 日期
  3. 删除 PUT
  4. 添加格式以查看它们是否按需要显示
  5. 删除旧变量以避免混淆.

您的两个代码步骤,数据步骤和 SQL 看起来并不相关. 不知道为什么您甚至需要时间间隔或任何内容的日期列表.有更好的方法来计算重叠.我认为您让我们解决了 xy 问题,向我们展示您正在尝试的内容会容易得多做,人们将能够提供更好的解决方案.

 数据 sasuser.Mdm2;/*1*/设置 sasuser.Mdm;/*2*/start_date = input(startdate, yymmdd10.);end_date = input(stopdate, yymmdd10.);做 xdate = start_date 到 stop_date;输出;/*3*/结尾;/*4*/格式 start_date end_date xDate yymmdd10.;/*5*/删除开始日期停止日期;跑步;*查看;proc 内容数据=sasuser.mdm2;跑步;

另外,如果你有某种分组变量来表明这些是同一集的一部分,你可以只取日期的最小值/最大值并减去它们以获得初学者的间隔持续时间.通过数据步骤进行分组很简单.

 数据要;设置有;通过身份证;保留情节;start_date = input(start_date, yymmdd10.);end_date = input(stopdate, yymmdd10.);prev_stop_date = 滞后(停止日期);如果 first.id 然后做;情节= 0;呼叫失踪(prev_stop_date);结尾;如果不是 (start_date <=prev_stop_date <= end_date) 然后情节+1;*可以添加逻辑来计算日期和持续时间以及取决于......;跑步;

I am trying to adapt Method 4 in this paper to calculate the duration of many observations, but discounting overlapping dates: https://support.sas.com/resources/papers/proceedings/proceedings/sugi31/048-31.pdf

For example, two rows of observations for subject 101 lasting from 2017-03-02 to 2017-03-16 and 2017-03-04 to 2017-03-17 respectively should return a value of only 16 days.

I am getting an error with the dates being 'Invalid numeric data', though, resulting in later errors. I have tried format startdate yyyymmdd10.; and format stopdate yyyymmdd10.; with no success.

Can anyone help me properly format my dates for use here, or identify any further errors?

Edit: Line 80 refers to do xdate = startdate to stopdate;.

I am still unable to convert or create the date variables as numeric/date values. I have used the following code:

data sasuser.Mdm;
set sasuser.Mdm; 
do xdate = input(Startdate,yymmdd10.) to input(stopdate,yymmdd10.);
    put xdate= yymmdd10.; 
output;
end;
run;

To get this output:

1    data sasuser.Mdm;
2    set sasuser.Mdm;
3    do xdate = input(Startdate,yymmdd10.) to input(stopdate,yymmdd10.);
4        put xdate= yymmdd10.;
5    output;
6    end;
7    run;

xdate=2017-03-02
xdate=2017-03-03
xdate=2017-03-04
xdate=2017-03-05
xdate=2017-03-06
xdate=2017-03-07
xdate=2017-03-08
xdate=2017-03-09
xdate=2017-03-10
xdate=2017-03-11
xdate=2017-03-12
xdate=2017-03-13
xdate=2017-03-14
xdate=2017-03-15
xdate=2017-03-16
xdate=2017-03-04
xdate=2017-03-05
xdate=2017-03-06
xdate=2017-03-07
xdate=2017-03-08
xdate=2017-03-09
xdate=2017-03-10
xdate=2017-03-11
xdate=2017-03-12
xdate=2017-03-13
xdate=2017-03-14
xdate=2017-03-15
xdate=2017-03-16
xdate=2017-03-17
xdate=2017-03-07
xdate=2017-03-08
xdate=2017-03-09
xdate=2017-03-10
xdate=2017-03-11
xdate=2017-03-12
xdate=2017-03-13
xdate=2017-03-14
xdate=2017-03-15
xdate=2017-03-16
xdate=2017-03-17
xdate=2017-03-18
xdate=2017-03-19
xdate=2017-03-20
xdate=2017-03-21
xdate=2017-02-08
xdate=2017-02-09
xdate=2017-02-10
xdate=2017-02-11
xdate=2017-02-12
xdate=2017-02-13
xdate=2017-02-14
xdate=2017-02-15
xdate=2017-02-16
xdate=2017-02-17
xdate=2017-02-18
xdate=2017-02-19
xdate=2017-02-20
xdate=2017-02-21
xdate=2017-02-22
xdate=2017-02-23
xdate=2017-02-24
xdate=2017-02-23
xdate=2017-02-24
xdate=2017-02-25
xdate=2017-02-26
xdate=2017-02-27
xdate=2017-02-28
xdate=2017-03-01
xdate=2017-03-02
xdate=2017-03-03
xdate=2017-03-04
xdate=2017-03-05
xdate=2017-03-06
xdate=2017-03-07
xdate=2017-03-08
xdate=2017-02-26
xdate=2017-02-28
xdate=2017-03-13
xdate=2017-03-17
xdate=2017-03-25
xdate=2017-03-28
xdate=2017-03-23
xdate=2017-03-24
xdate=2017-03-25
xdate=2017-03-26
xdate=2017-03-27
xdate=2017-03-28
xdate=2017-03-29
xdate=2017-03-30
xdate=2017-03-29
xdate=2017-04-03
xdate=2017-04-04
xdate=2017-04-03
xdate=2017-04-04
xdate=2017-04-05
xdate=2017-04-05
xdate=2017-04-06
xdate=2017-04-06
xdate=2017-04-07
xdate=2017-03-25
xdate=2017-03-26
xdate=2017-03-30
xdate=2017-04-01
xdate=2017-04-02
xdate=2017-04-03
xdate=2017-04-04
xdate=2017-04-08
xdate=2017-04-09
xdate=2017-04-10
xdate=2017-04-11
xdate=2017-04-12
xdate=2017-04-12
xdate=2017-04-13
xdate=2017-04-13
xdate=2017-04-14
xdate=2017-04-15
xdate=2017-04-16
xdate=2017-04-17
xdate=2017-04-18
xdate=2017-04-19
xdate=2017-04-20
xdate=2017-04-21
xdate=2017-04-22
xdate=2017-04-19
xdate=2017-04-23
xdate=2017-04-24
xdate=2017-04-25
xdate=2017-04-26
xdate=2017-04-26
xdate=2017-04-27
xdate=2017-04-28
xdate=2017-05-05
xdate=2017-05-06
xdate=2017-05-16
xdate=2017-05-19
xdate=2017-05-20
xdate=2017-05-21
xdate=2017-05-22
xdate=2017-05-19
xdate=2017-05-20
xdate=2017-05-21
xdate=2017-05-22
xdate=2017-05-23
xdate=2017-05-24
xdate=2017-05-25
xdate=2017-05-26
xdate=2017-05-22
xdate=2017-05-23
xdate=2017-05-24
xdate=2017-05-25
xdate=2017-05-26
xdate=2017-05-27
xdate=2017-05-28
xdate=2017-05-29
xdate=2017-05-30
xdate=2017-05-31
xdate=2017-06-01
xdate=2017-06-02
xdate=2017-06-03
xdate=2017-06-04
xdate=2017-06-05
xdate=2017-06-06
xdate=2017-06-07
xdate=2017-06-08
xdate=2017-06-09
xdate=2017-06-10
xdate=2017-06-11
xdate=2017-06-12
xdate=2017-06-13
xdate=2017-06-14
xdate=2017-06-15
xdate=2017-06-16
xdate=2017-06-17
xdate=2017-06-18
xdate=2017-06-19
xdate=2017-06-20
xdate=2017-06-21
xdate=2017-06-22
xdate=2017-06-23
xdate=2017-06-24
xdate=2017-06-25
xdate=2017-06-26
xdate=2017-06-27
xdate=2017-06-28
xdate=2017-06-29
xdate=2017-06-30
xdate=2017-07-01
xdate=2017-07-02
xdate=2017-07-03
xdate=2017-07-04
xdate=2017-07-05
xdate=2017-07-06
xdate=2017-07-07
xdate=2017-07-08
xdate=2017-07-09
xdate=2017-07-10
xdate=2017-07-11
xdate=2017-07-12
xdate=2017-07-13
xdate=2017-07-14
xdate=2017-07-15
xdate=2017-07-16
xdate=2017-07-17
xdate=2017-07-18
xdate=2017-07-19
xdate=2017-07-20
xdate=2017-07-21
xdate=2017-07-22
xdate=2017-07-23
xdate=2017-07-24
xdate=2017-07-25
xdate=2017-07-26
xdate=2017-07-27
xdate=2017-07-28
xdate=2017-07-29
xdate=2017-07-30
xdate=2017-07-31
xdate=2017-08-01
xdate=2017-08-02
xdate=2017-08-03
xdate=2017-08-04
xdate=2017-08-05
xdate=2017-08-06
xdate=2017-08-07
xdate=2017-08-08
xdate=2017-08-09
xdate=2017-08-10
xdate=2017-08-11
xdate=2017-08-12
xdate=2017-08-13
xdate=2017-08-14
xdate=2017-08-15
xdate=2017-08-16
xdate=2017-08-17
xdate=2017-08-18
xdate=2017-08-19
xdate=2017-08-20
xdate=2017-08-21
xdate=2017-08-22
xdate=2017-08-23
xdate=2017-08-24
xdate=2017-08-25
xdate=2017-08-26
xdate=2017-08-27
xdate=2017-08-28
xdate=2017-08-29
xdate=2017-08-30
xdate=2017-08-31
xdate=2017-09-01
xdate=2017-05-27
xdate=2017-05-28
xdate=2017-05-29
xdate=2017-05-30
xdate=2017-05-31
xdate=2017-06-01
xdate=2017-06-02
xdate=2017-06-03
xdate=2017-06-04
xdate=2017-06-05
xdate=2017-06-06
xdate=2017-06-07
xdate=2017-06-08
xdate=2017-06-09
xdate=2017-06-10
xdate=2017-06-11
xdate=2017-06-12
xdate=2017-06-13
xdate=2017-06-14
xdate=2017-06-15
xdate=2017-06-16
xdate=2017-06-17
xdate=2017-06-18
xdate=2017-06-19
xdate=2017-06-20
xdate=2017-06-21
xdate=2017-06-22
xdate=2017-06-23
xdate=2017-06-24
xdate=2017-06-25
xdate=2017-06-26
xdate=2017-06-27
xdate=2017-06-28
xdate=2017-06-29
xdate=2017-06-30
xdate=2017-07-01
xdate=2017-07-02
xdate=2017-07-03
xdate=2017-07-04
xdate=2017-07-05
xdate=2017-07-06
xdate=2017-07-07
xdate=2017-07-08
xdate=2017-07-09
xdate=2017-07-10
xdate=2017-07-11
xdate=2017-07-12
xdate=2017-07-13
xdate=2017-07-14
xdate=2017-07-15
xdate=2017-07-16
xdate=2017-07-17
xdate=2017-07-18
xdate=2017-07-19
xdate=2017-07-20
xdate=2017-07-21
xdate=2017-07-22
xdate=2017-07-23
xdate=2017-07-24
xdate=2017-07-25
xdate=2017-07-26
xdate=2017-07-27
xdate=2017-07-28
xdate=2017-07-29
xdate=2017-07-30
xdate=2017-07-31
xdate=2017-08-01
xdate=2017-08-02
xdate=2017-08-03
xdate=2017-08-04
xdate=2017-08-05
xdate=2017-08-06
xdate=2017-08-07
xdate=2017-08-08
xdate=2017-08-09
xdate=2017-08-10
xdate=2017-08-11
xdate=2017-08-12
xdate=2017-08-13
xdate=2017-08-14
xdate=2017-08-15
xdate=2017-08-16
xdate=2017-08-17
xdate=2017-08-18
xdate=2017-08-19
xdate=2017-08-20
xdate=2017-08-21
xdate=2017-08-22
xdate=2017-08-23
xdate=2017-08-24
xdate=2017-08-25
xdate=2017-08-26
xdate=2017-08-27
xdate=2017-08-28
xdate=2017-08-29
xdate=2017-08-30
xdate=2017-08-31
xdate=2017-09-01
xdate=2017-06-14
xdate=2017-06-15
xdate=2017-06-16
xdate=2017-06-17
xdate=2017-06-18
xdate=2017-06-19
xdate=2017-06-20
xdate=2017-06-21
xdate=2017-06-22
xdate=2017-06-23
xdate=2017-06-24
xdate=2017-06-25
xdate=2017-06-26
xdate=2017-06-27
xdate=2017-06-28
xdate=2017-06-29
xdate=2017-06-14
xdate=2017-06-15
xdate=2017-06-16
xdate=2017-06-17
xdate=2017-06-18
xdate=2017-06-19
xdate=2017-06-20
xdate=2017-06-21
xdate=2017-06-22
xdate=2017-06-23
xdate=2017-06-24
xdate=2017-06-25
xdate=2017-06-26
xdate=2017-06-27
xdate=2017-06-28
xdate=2017-06-29
xdate=2017-03-27
xdate=2017-04-02
xdate=2017-04-07
xdate=2017-04-08
xdate=2017-04-09
xdate=2017-04-13
xdate=2017-04-14
xdate=2017-04-15
xdate=2017-04-16
xdate=2017-04-17
xdate=2017-04-19
xdate=2017-04-20
xdate=2017-04-21
xdate=2017-04-22
xdate=2017-04-23
xdate=2017-04-24
xdate=2017-04-20
xdate=2017-04-21
xdate=2017-04-22
xdate=2017-04-23
xdate=2017-04-24
xdate=2017-04-25
xdate=2017-04-26
xdate=2017-04-27
xdate=2017-04-28
xdate=2017-04-29
xdate=2017-04-30
xdate=2017-05-01
xdate=2017-05-02
xdate=2017-04-24
xdate=2017-04-25
xdate=2017-04-26
xdate=2017-04-27
xdate=2017-04-28
xdate=2017-04-29
xdate=2017-04-30
xdate=2017-05-01
xdate=2017-05-02
xdate=2017-05-03
xdate=2017-05-04
xdate=2017-05-05
xdate=2017-05-06
xdate=2017-05-07
xdate=2017-05-08
xdate=2017-05-09
xdate=2017-05-10
xdate=2017-05-11
xdate=2017-05-12
xdate=2017-05-13
xdate=2017-05-14
xdate=2017-05-15
xdate=2017-05-16
ERROR: Invalid DO loop control information, either the INITIAL or TO expression is missing or the
       BY expression is missing, zero, or invalid.
SUBJID=106 KEY=106-9 OBS=9 TOTAL=12 STARTDATE=2017-04-25 STOPDATE=  CLASS=Steroid / Diuretic
xdate=20934 _ERROR_=1 _N_=52
NOTE: The SAS System stopped processing this step because of errors.
NOTE: There were 52 observations read from the data set SASUSER.MDM.
WARNING: The data set SASUSER.MDM may be incomplete.  When this step was stopped there were 431
         observations and 8 variables.
WARNING: Data set SASUSER.MDM was not replaced because this step was stopped.
NOTE: DATA statement used (Total process time):
      real time           0.38 seconds
      cpu time            0.29 seconds```

I don't understand why input doesn't appear to be working. Dates are still listed as character strings under column attributes. The do part also isn't working as intended. I'd be grateful for any further guidance.

解决方案

  1. Do not use the same name in the DATA and SET statement. Then you're always having to rebuild from the start.
  2. Convert your start and stop date to SAS dates
  3. Remove PUT
  4. Add formats to see them displayed as desired
  5. Drop old variables to avoid confusion.

Your two code steps, the data step and SQL do not appear related. Not sure why you would even need a list of dates for intervals or anything. There are much better ways to calculate an overlap. I think you're putting us through an xy problem where it would be significantly easier to show us what you're attempting to do and people would be able to provide a much better solution.

  data sasuser.Mdm2; /*1*/
   set sasuser.Mdm; 
    /*2*/
   start_date = input(startdate, yymmdd10.);
   end_date = input(stopdate, yymmdd10.);

    do xdate = start_date to stop_date;
       output; /*3*/
     end;

    /*4*/
     format start_date end_date xDate yymmdd10.;
     /*5*/
    drop startdate stopdate;

    run;

     *check;
      proc contents data=sasuser.mdm2;
      run;

EDIT: Also, if you had some sort of grouping variable to indicate that these were part of the same episode you could then just take the min/max of the dates and subtract them to get the interval duration for starters. Grouping via a data step is trivial.

  data want;
  set have;
 by id;
 
 retain episode;
 
 start_date = input(start_date, yymmdd10.);
 end_date = input(stopdate, yymmdd10.);
 prev_stop_date = lag(stopDate);

 if first.id then do;
      episode = 0;
      call missing(prev_stop_date);
 end;

 if not (start_date <=prev_stop_date <= end_date) then episode+1;

 *could add in logic to calculate dates and durations as well depending....;

 run;

这篇关于如何格式化日期以在 SAS 中使用?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆