因此,我正在处理具有数百万行的数据集。我试图减少行数,以便我可以合并这个数据集和另一个由zipcode设置的数据集。根据特定列中的特定值在SAS中选择行
我想要做的是采取一个特定列“X6”,并通过它的价值“357”进行搜索。然后每行都有我想要移动到一个新的数据集的值。
我假设我将不得不使用某种形式的if/then语句,但我无法获得任何成功的工作。如果需要,我可以发布一些我的数据或我目前拥有的SAS代码的快照。我见过其他类似的东西,但都没有涉及SAS。
感谢您的高级帮助。
因此,我正在处理具有数百万行的数据集。我试图减少行数,以便我可以合并这个数据集和另一个由zipcode设置的数据集。根据特定列中的特定值在SAS中选择行
我想要做的是采取一个特定列“X6”,并通过它的价值“357”进行搜索。然后每行都有我想要移动到一个新的数据集的值。
我假设我将不得不使用某种形式的if/then语句,但我无法获得任何成功的工作。如果需要,我可以发布一些我的数据或我目前拥有的SAS代码的快照。我见过其他类似的东西,但都没有涉及SAS。
感谢您的高级帮助。
只需使用PROC SQL来创建自己的数据集合,然后引用您寻找您的查询的价值 -
Proc SQL;
Create table new as
Select *
From dataset
Where x6 = 357
;
Quit;
假设你5233变量是数字...
在移动设备上。 ..没有代码文本
随着数据步骤,这是非常简单的。我会给你一个例子。
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也可以用来排除。
太棒了,因为我想要做x6 = 357,354,351和348! – Fmonkey2001
不错!考虑使用速度而不是如果速度是一个问题 – RamB
你能告诉我们你试过了什么吗? – RamB