【发布时间】:2016-07-22 20:43:34
【问题描述】:
我有以下两个数据集。 我想从 A 中删除日期在文件 B 中的输入输出期间内的行。
文件 A
SEQ ID date var1
1 A12 03JAN04 242
2 A12 01FEB06 356
3 A12 06JAN08 325
4 A12 28DEC09 123
5 B34 06MAY03 985
6 B34 13JUN03 198
7 B34 10MAY05 241
8 C56 09NOV10 155
9 C56 19OCT13 352
文件 B
ID date_in date_out
A12 01JAN04 04JAN04
A12 05FEB08 08FEB08
B34 03MAY03 06MAY03
B34 09MAY05 19MAY05
C56 12JUL12 18JUL12
例如,对于 ID=A12,他的第一个 obs 属于 01JAN04-04JAN04,因此我删除了那个 obs,但保留了其余的。
基本上,我应该得到以下结果
SEQ ID date var1
2 A12 01FEB06 356
3 A12 06JAN08 325
4 A12 28DEC09 123
6 B34 13JUN03 198
8 C56 09NOV10 155
9 C56 19OCT13 352
文件 A 和 B 的每个 ID 都有多条记录,文件 B 中的进出周期并不总是恒定的。
我认为在 R 中,我可能会通过 A 中的行编写一个循环,从 B 中提取一个与 ID 匹配的列表,然后从 B 中循环遍历该期间的列表,看看 A 中的日期是否在中间期间。
但我需要在 SAS 中这样做,所以我真的不知道从哪里开始。我如何在 SAS 中逐行循环? 例如。我应该编写一个循环遍历两个文件的宏吗?还是以某种方式使用 SQL?
对于如何解决这个问题,我将不胜感激。 谢谢!
【问题讨论】:
标签: sas data-manipulation