If statement 基于特定列中的特定值在SAS中拾取行

If statement 基于特定列中的特定值在SAS中拾取行,if-statement,sas,If Statement,Sas,所以我正在处理一个有数百万行的数据集。我试图减少行数,这样我就可以通过zipcode合并这个数据集和另一个数据集 我试图做的是取一个特定的列“X6”,并在其中搜索值“357”。然后,每一行都有这个值,我想移动到一个新的数据集中 我假设我必须使用某种形式的if/then语句,但我无法让任何东西成功工作。如果需要,我可以发布我的一些数据或SAS代码的快照。我见过其他类似的事情,但没有一件涉及SAS 感谢您在advanced中提供的所有帮助。只需使用Proc SQL创建数据集,然后在查询中引用所需的值

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

我试图做的是取一个特定的列“X6”,并在其中搜索值“357”。然后,每一行都有这个值,我想移动到一个新的数据集中

我假设我必须使用某种形式的if/then语句,但我无法让任何东西成功工作。如果需要,我可以发布我的一些数据或SAS代码的快照。我见过其他类似的事情,但没有一件涉及SAS


感谢您在advanced中提供的所有帮助。

只需使用Proc SQL创建数据集,然后在查询中引用所需的值即可-

Proc SQL;
Create table new as
Select *
From dataset 
Where x6 = 357
;
Quit;
假设您的x6变量是数字


在移动设备上…抱歉没有代码文本

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

Proc SQL;
Create table new as
Select *
From dataset 
Where x6 = 357
;
Quit;
假设您的x6变量是数字


在移动设备上…很抱歉没有数据步骤的代码文本

,这真的很简单。我给你举个例子

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;

正如我所说,有几种方法可以做到这一点,但我不清楚哪种方法更适合您。

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

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;

正如我所说,有几种方法可以做到这一点,但我不清楚哪种方法更适合您。

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也可以用于排除。

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也可以排除。

你能告诉我们你试过什么吗?你能告诉我们你试过什么吗?太棒了,因为我想做x6=357354351和348!美好的考虑使用哪里而不是IF,如果速度是一个很好的问题,因为我想做x6=357354351和348!美好的如果速度是一个问题,考虑使用哪里代替IF