2016-01-21 200 views
0

因此,我正在处理具有数百万行的数据集。我试图减少行数,以便我可以合并这个数据集和另一个由zipcode设置的数据集。根据特定列中的特定值在SAS中选择​​行

我想要做的是采取一个特定列“X6”,并通过它的价值“357”进行搜索。然后每行都有我想要移动到一个新的数据集的值。

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

感谢您的高级帮助。

+0

你能告诉我们你试过了什么吗? – RamB

回答

0

只需使用PROC SQL来创建自己的数据集合,然后引用您寻找您的查询的价值 -

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

假设你5233变量是数字...

在移动设备上。 ..没有代码文本

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; 

正如我所说的,有几种方法可以做到这一点,而且对我而言这并不清楚哪种方法对您更好。

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

+0

太棒了,因为我想要做x6 = 357,354,351和348! – Fmonkey2001

+1

不错!考虑使用速度而不是如果速度是一个问题 – RamB