【发布时间】:2022-09-27 17:57:29
【问题描述】:
我在 SAS Enterprise Guide 中有如下表。
数据类型及含义:
- ID - 数字 - 客户端 ID
- DT - 日期 - 更改日期
- OFFER_1 - 字符 - 当前报价
- OFFER_2 - 字符 - 更改后的报价
原始数据集中的值没有排序,但如果对解决方案很重要,可以排序。
ID | DT | OFFER_1 | OFFER_2
-----|-----------|----------|----------
123 | 01MAY2020 | PR | PR
123 | 05MAY2020 | PR | P
123 | 10MAY2020 | P | P
123 | 11MAY2020 | P | P
123 | 20MAY2020 | P | PR
123 | 21MAY2020 | PR | M
123 | 25MAY2020 | M | M
777 | 30MAY2020 | PR | M
223 | 02JAN2020 | PR | PR
223 | 15MAR2020 | PR | PR
402 | 20MAR2020 | M | M
33 | 11AUG2020 | M | PR
11 | 20JAN2020 | PR | M
11 | 05FEB2020 | M | M
我需要创建新列“COL1”,其中将包含信息:
- 如果客户将提议从 PR 更改为 P 或 M,则计算他在再次返回 PR 之前最多持续了多少天,或者如果他没有返回 PR,则在更改后他已经处于 P 或 M 的天数
- 如果他没有将 PR 更改为 P 或 M \"COL1\" = 0
所以,结果我需要下面的东西:
ID | DT | OFFER_1 | OFFER_2 | COL1
-----|-----------|----------|----------|---------
123 | 01MAY2020 | PR | PR | 15
123 | 05MAY2020 | PR | P | 15
123 | 10MAY2020 | P | P | 15
123 | 11MAY2020 | P | P | 15
123 | 20MAY2020 | P | PR | 15
123 | 21MAY2020 | PR | M | 15
123 | 25MAY2020 | M | M | 15
777 | 30MAY2020 | PR | M | 1
223 | 02JAN2020 | PR | PR | 0
223 | 15MAR2020 | PR | PR | 0
402 | 20MAR2020 | M | M | 0
33 | 11AUG2020 | M | PR | 0
11 | 20JAN2020 | PR | M | 16
11 | 05FEB2020 | M | M | 16
因为:
- ID = 123,在“COL1”中有 15 - 因为将 PR 更改为 P 或 M 并持续了最多 15 天(从 2020 年 5 月 5 日到 2020 年 5 月 20 日),然后再次返回 PR,将 PR 更改为 P 或 M 2 次但第二次变化持续了 4 天并且 15 > 4
- ID = 777,在 \"COL1\" 中有 1 - 因为将 PR 更改为 P 或 M 并且最多持续 1 天 (30MAY2020)
- ID = 223,在 \"COL1\" 中有 0 - 因为他没有将 PR 更改为 P 或 M
- ID = 402,在 \"COL1\" 中有 0 - 因为他没有将 PR 更改为 P 或 M
- ID = 33,在 \"COL1\" 中有 0 - 因为他没有将 PR 更改为 P 或 M
- ID = 11,在 \"COL1\" 中有 16 个 - 因为将 PR 更改为 P 或 M 并且持续了最多 16 天(从 2020 年 1 月 20 日到 2020 年 2 月 5 日)并且没有再次返回到 PR
如何在 PROC SQL 或普通 SAS 代码中的 SAS Enterprise Guide 中做到这一点?
-
同样,不要重复问题,更新原始问题。
-
哦,对不起,我只是没有准确地解释问题,所以解决方案没有解决问题。你知道内格多吗?
-
如果您第一次没有足够准确地解释问题,请更新帖子。这就是编辑功能的重点。
-
好的,我会记住的,Negdo :),与此同时,您知道如何解决所描述的问题吗?
-
有人知道吗?
标签: date sas proc-sql enterprise-guide 4gl