我需要根据已经分配了ID的数据集概述当前可用的一系列ID号(如果ID在文件上,那么它正在使用中...如果它没有存档,那么它可供使用)。
问题是我不知道如何创建一个显示当前存档的两个ID#之间的ID号的数据集 - 假设我有下面的数据集 -
data have;
input id;
datalines;
1
5
6
10
;
run;
我需要的是新数据集在此数据集的以下结构中 -
data need;
input id;
datalines;
2
3
4
7
8
9
;
run;
我不确定如何制作ID#2,3和4的观察结果,因为这些是“可用ID”的情景......
我最初的尝试是将ID值从一个观察值减去下一个观察值以找到差异,但我从那里开始就如何使用该值并在它之前将观察结果加1 ...从那里开始变得相当混乱。
任何帮助将不胜感激。
答案 0 :(得分:1)
只要您知道可能的ID集合,就可以将它们全部放在一个文件中并排除使用过的ID。 e.g。
data id_set;
do id = 1 to 10;
output;
end;
run;
proc sql;
create table need as
select id
from id_set
where id not in (select id from have)
;
quit;
答案 1 :(得分:1)
创建一个存储先前id的临时变量,然后在它和当前id之间循环,输出每次迭代。
...
componentWillMount() {
const { store } = this.context;
store.dispatch({type: 'BLAH'});
// I want the request data
}
render() { ... }
答案 2 :(得分:0)
以Jetzler的答案为基础:另一种选择是使用MERGE语句。在这种情况下:
注意:在合并之前,按id排序两个数据集(如果尚未排序);
data want;
merge id_set (in=a)
have (in=b); /*specify datasets and vars to allow the conditional below*/
by id; /*merge key variable*/
if a and not b; /*on output keep only records in ID_SET that are not in HAVE*/
run;