【问题标题】:Find smallest difference between dates SAS查找日期之间的最小差异 SAS
【发布时间】:2013-12-11 04:00:39
【问题描述】:

我有这个硬件问题在问我:

编写一个 SAS 程序来创建一个数据集,其中包含最接近的测试日期 邮寄日期。您的程序必须适用于任何测试日期和交付日期。

这是我到目前为止所做的。数据源位于 Excel 中的单独表格中,我将其拉入并合并,并且只有 1 个交付日期和 21 个测试日期。我认为找到最近日期的最佳方法是最小差异的绝对值,然后使用 proc 排序,因为这是除 proc 导入和导出之外我们被允许使用的唯一 proc 命令。任何想法/帮助/任何东西都将不胜感激。

proc import datafile = "C:\Users\file1.xls"
dbms=xls replace out=labs; sheet = "labs";;
run;

proc import datafile = "C:\Users\file1.xls"
dbms=xls replace out=delivery; sheet = "delivery";
run;

data dl;
merge delivery labs;
dd = delivery_date;
diff = dd - Test_date;
run;

这是它们都在 1 列中的数据,不知道如何格式化。

表 1:

交货日期 2011 年 11 月 16 日

表 2:

测试日期 2011 年 3 月 13 日 2011 年 4 月 10 日 2011 年 5 月 20 日 2011 年 6 月 9 日 2011 年 7 月 31 日 2011 年 8 月 17 日 2011 年 9 月 12 日 2011 年 11 月 10 日 2011 年 10 月 11 日 2011 年 12 月 12 日 2012 年 2 月 29 日 2013 年 3 月 13 日 2010 年 4 月 10 日 2010 年 5 月 20 日 2010 年 6 月 9 日 2011 年 7 月 21 日 2011 年 8 月 15 日 2011 年 9 月 15 日 2011 年 10 月 19 日 11 年 11 月 21 日 2011 年 12 月 22 日

【问题讨论】:

  • 那么,你的问题是什么?
  • 听起来你的老师是个受虐狂,只允许你使用proc sort/import/export。如果我们能看到您的数据集样本(即您正在使用的 excel 文件的子集),那就太好了。我的猜测是,在每一行中,您都有一个交付日期和至少 21 个测试日期,您想找出哪一个测试日期最接近每一行的交付日期?

标签: date sas


【解决方案1】:

听起来你是在正确的轨道上。鉴于这是家庭作业,我不会给你一个完整的解决方案,但这里有一些你可能会发现有用的组件:

  • 首先,您应该查看 SAS 网站以获取有关绝对函数的更多信息(因为那是您要走的路线):
    SAS/IML(R) 9.3 User's Guide: ABS Function

  • 接下来,您可能需要查看PROC SORT 的文档。这对于找出最小的差异很有用。

  • 对于只获取一条记录,您可能会发现 OBS 数据集选项很有帮助。
    (提示:您可能需要创建第二个数据集。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-09-29
    • 1970-01-01
    • 2016-09-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多