Robbie的,如果你的數據是不是已經在一個數組,你不應該使用陣列的方法,因爲它增加了額外的複雜性權利 - 以罰款。
然而,如果它是以陣列已經,whichc
(或whichn
爲數字)是一個很好的解決方案。
data oldtable;
input Zip Transport_Company $ No_Sold;
datalines;
12345 Hyundai 10
90145 NASA 50
20202 Toyota 30
40002 HarleyDavidson 5
10000 Ford 15
;;;;
run;
Data arrayInIf;
set OldTable;
array Car_array{3} $ ('Hyundai', 'Toyota', 'Ford');
If whichc(transport_company,of car_array[*])=0
Then
Delete;
Run;
在一般情況下,最好方式要做到這一點是建立一個格式。查找PROC FORMAT CNTLIN
如何從數據集中執行此操作;或者你可以在代碼中做到這一點:
proc format;
value $automakerF
'Hyundai','Toyota','Ford'=1
other=0;
quit;
data fmtInIf;
set oldtable;
if put(transport_company,automakerF.) ne '1'
then delete;
run;
這有從你的代碼中分離數據的價值,再加上你可以從一個數據集,如果你想使汽車製造商名字的;同樣,你也可以用一種格式來完成你所有的不同行業。它的速度也非常快,比一堆if語句或in語句更快。
來源
2014-12-04 15:13:54
Joe
您可以發佈數據樣本,這將有助於答案貢獻。 – 2014-12-04 06:22:02