我有一个数据集df
,如下所示:
ZIP TEENS ADULTS SENIORS TOTAL
054216 . 2000 . 2000
02216 45 105 10 160
01720 0 256 0 256
02113 . 4122 918 5040
02144 782 20 0 1002
我想排除所有成年人的邮政编码。另外,我想只保留成年人口大于50%的行。下面列出的我的代码保留了第1行和第3行,即使这些社区中没有青少年或老年人。任何关于它有什么问题的提示都将不胜感激。
data adult_zips;
set df;
where ((adults/total) > 0.50) and
((teens is not missing) or (teens ne 0)) and
((seniors is not missing) or (seniors ne 0));
run;
答案 0 :(得分:1)
你混淆了AND和OR:
data adult_zips;
set df;
where adults / total > 0.50
and
(
(teens is not missing and teens ne 0)
or
(seniors is not missing and seniors ne 0)
);
run;
或更简单:
data adult_zips;
set df;
where adults / total > 0.50
and (teens > 0 or seniors > 0);
run;
甚至:
data adult_zips;
set df;
where adults / total > 0.50
and adults ne total;
run;
答案 1 :(得分:1)
data adult_zips;
set df;
where adults / total > 0.50
and (teens > 0 or seniors > 0);
运行;
这是最简单的解决方案。