1

我有一张大桌子,我需要从中放下箱子。

我只需要删除那些在 2011 年 4 月之前被拆除的房产(格式为 201104)。

从其他地方的经验来看,我认为这很简单。

选择“endDate < 201104”的所有案例,反转选择并将所选案例保存到新文件中。

数字字段“EndDate”(拆除日期)仅为拆除的房产填充,所以我不能做“EndDate > 201104”。

但我在任何地方都找不到 INVERT SELECTION 。

也想过

NUMERIC Flag (F1.0) .
COMPUTE Flag = 1 . 

选择“其中 EndDate < 201104”的所有情况 COMPUTE Flag = 2 。

然后保存“where flag = 2”,但这会将 flag = 2 应用于所有情况。

这个简单的选择反转工具不可用有充分的理由吗?

4

2 回答 2

1

如果EndDate您要选择的所有案例都缺少,您可以简单地使用

SELECT IF MISSING(EndDate).

等效地,这里是您将如何计算标志以选择特定情况的方法。初始化为一个号码,然后分配EndDate < 201104给不同的号码,然后选择原来的初始化号码。

data list free / EndDate ShouldKeep.
begin data
201101 0
201102 0
201103 0
. 1
. 1
. 1
. 1
end data.

*select if MISSING(EndDate).
*exe.

compute #flag = 0.
if (EndDate < 201104) #flag = 1.
select if #flag = 0.
exe.

您还可以将缺失EndDate值重新编码为 201104 之后的日期。

于 2013-09-27T13:20:36.490 回答
0

我找到了一种方法来做类似的事情:像往常一样做你的“选择如果”,当你对结果感到满意时,你会添加一行重新编码。这是一个示例,我想在其中选择符合两个条件(代码 =“2102P11”和 sitzung = 4)的所有案例。我对结果不满意,这与我想要的相反。

DATASET ACTIVATE DataSet1.
USE ALL.
COMPUTE filter_$=(CODE = "2102P11" AND sitzung = 4).
VARIABLE LABELS filter_$ 'CODE = "2102P11" AND sitzung = 4 (FILTER)'.
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
FILTER BY filter_$.
EXECUTE.

您可以通过添加重新编码(到同一变量中)来反转选择:

DATASET ACTIVATE DataSet1.
USE ALL.
COMPUTE filter_$=(CODE = "2102P11" AND sitzung = 4).
VARIABLE LABELS filter_$ 'CODE = "2102P11" AND sitzung = 4 (FILTER)'.
VALUE LABELS filter_$ 0 'Not Selected' 1 'Selected'.
FORMATS filter_$ (f1.0).
RECODE filter_$ (1=0) (0=1).
FILTER BY filter_$.
EXECUTE.
于 2016-01-04T14:04:00.853 回答