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