date - 以两种不同的格式为每个订阅者查找最小/最旧的创建日期 SAS
问题描述
我有一个呼叫日志数据集,该数据集对一组多次呼叫的订户进行,每次呼叫尝试都在一个新行上。我需要根据第一次联系订阅者的时间来分析一些数据,但我无法提取最短联系日期。我尝试了一些事情,但我创建的唯一成功输出只是输出已经链接到线路的创建日期(这是我需要为每个订户的呼叫集获取最小值的变量),而不是最小的在该订阅者的数据集中创建日期。
我的理想结果是这样的(其中 min_date/min_month 是我要创建的变量):
订户 ID | 创建日期 | 最小日期 | Min_month
123456 | 2020 年 1 月 1 日 | 2020 年 1 月 1 日 | 2020年1月
123456 | 2020 年 3 月 5 日 | 2020 年 1 月 1 日 | 2020年1月
我对输出格式也有一些问题。当我得到输出时,我得到了以某种顺序数字代码格式化的日期?例如,我会得到类似“22095”的东西,而不是任何类型的实际日期。
我用来提取最小日期的代码:
create table min_dates as
select
sub_id,
min2.min_date2
from (select 'Subscriber ID'n as sub_id, min('Create Date'n) as min_date2 from work.min) as min2
inner join work.min as min1 on min1.'Subscriber ID'n = min2.sub_id;
quit;
我认为这可能有效,但由于格式问题,我无法真正说出。当我将这个子表重新连接到代码末尾的主数据提取时,所有值也都丢失了。如果它是正确的,我需要从这段代码中再做两件事:
- 将相同的最小日期拆分为仅包含月份和年份的新列
- min_date 正确格式化为可读日期(只要它实际上是日期,我不需要任何特定的日期格式)
但如果它是错误的并且只是给我同一行的日期,我也需要修复它。
任何帮助表示赞赏。
解决方案
SAS 日期值只是具有特殊含义的数字(自 以来的天数01jan1960
)。
将格式应用于所选变量,它将显示为人类可读的日期。
select
sub_id,
min2.min_date2 format=DATE9.
from
...
该变量最初是计算出来的,没有应用格式。这就是为什么您的原始代码仅将日期值显示为数字的原因。
推荐阅读
- jenkins - 如何将环境变量传递给 Jenkins Pipeline Tools 部分
- r - 如何在 R 中使用过滤选项?
- c - C 数据类型大小 intmax_t 与任何其他整数、void * 与任何其他指针
- algorithm - 这有重叠的子问题吗?
- amazon-dynamodb - DynamoDB 事务
- php - 搜索数据时如何将我的自定义 URL 获取到 URL 浏览器
- sql - 我的订单表中的地址列如何引用多种类型的地址格式?
- jquery-ui - 如何在jquery ui中的父元素的每个子元素上单独删除一个元素?
- arrays - Angular - 在数组中找不到值
- java - ArithmeticException 未被捕获