【发布时间】:2021-12-07 16:04:10
【问题描述】:
我正在尝试比较不同日期列上的交叉值。标志列有两个值:D 和 R。我的条件是当 D-Flag 出现在 R-flag 之后并且 DATE2 等于 DATE1 创建名为 False_Flag 的列并附加 1,否则按 ID 附加 0。
这是我的表的示例:
在 ID=1 时,第一行的 DATE2 等于第二列的 DATE1,并且 D 标志位于 R 标志之后,因此我想创建名为 False_flag 的新列并针对这种情况追加 1。与 ID =3 相同,其他情况 like ID = 5 为 False_flag 附加 0
ID DATE1 DATE2 FLAG
1 10JUN2021 17JUN2021 R
1 17JUN2021 25SEP2021 D
3 12MAR2018 25MAR2018 R
3 25MAR2018 14APR2018 D
3 14APR2018 23JUL2018 D
5 22OCT2020 15NOV2020 D
这是我想要的输出:
ID DATE1 DATE2 FLAG FALSE_FLAG
1 10JUN2021 17JUN2021 R 1
1 17JUN2021 25SEP2021 D 1
3 12MAR2018 25MAR2018 R 1
3 25MAR2018 14APR2018 D 1
3 14APR2018 23JUL2018 D 0
5 22OCT2020 15NOV2020 D 0
我是 SAS 的新手,我该怎么做?
【问题讨论】:
-
我不懂逻辑。在您已经移动到带有“D”的下一行之后,您是否真的需要返回并修改带有“R”的行? SAS 看不到未来,但可以学会记住过去。
标签: sas