根据特定列中的特定值在SAS中选取行

时间:2016-01-21 18:04:36

标签: if-statement sas

所以我正在处理具有数百万行的数据集。我试图减少行数,以便我可以通过zipcode合并这个数据集和另一个数据集。

我想要做的是选择一个特定的专栏" X6"并在其中搜索" 357"的值。然后,每个具有该值的行都要移动到新的数据集中。

我假设我将不得不使用某种形式的if / then声明,但我无法成功地完成任何工作。如果需要,我可以发布一些数据的快照或我目前拥有的SAS代码。我见过其他类似的东西,但没有一个涉及SAS。

感谢您提供的所有高级帮助。

3 个答案:

答案 0 :(得分:3)

RamB提供了一种解析为两个数据集的好方法。 如果您只想要一个作为原始子集的新数据集,则以下内容将正常运行

 DATA NEW;
      SET ORIGINAL;
      IF X6="357";   *NOTE: THIS ASSUMES X6 IS DEFINED AS CHARACTER*
 RUN;

一个不错的函数也可以解析多个条件。假设你想保留X6 = 357或588的记录。

 DATA NEW;
      SET ORIGINAL;
      IF X6 IN("357","588");   *NOTE: THIS ASSUMES X6 IS DEFINED AS CHARACTER*
 RUN;

最后,NOTIN也可以排除。

答案 1 :(得分:2)

通过数据步骤,这非常简单。我给你举个例子。

data dataset_with_357
     original_without_357;
set original_dataset;

if compress(x6) = "357" then output dataset_with_357;
else output original_without_357;
run;

正如我所说,有几种方法可以做到这一点,对我而言,哪种方式对你更好。

答案 2 :(得分:0)

只需使用Proc SQL创建数据集,然后在查询中引用您要查找的值 -

Proc SQL;
Create table new as
Select *
From dataset 
Where x6 = 357
;
Quit;

假设你的x6变量是数字......

在移动设备上...抱歉没有代码文字