BookmarkSubscribeRSS Feed
Tushh
Calcite | Level 5

Hi,

 

 

i have dataset from which i want to delete Entire ROWS WHich columns contails following values.(zero, zeros with decimal point & Dot)

 

 

0   -: zero

 

0.000  -: Zeros with decimal

.    -: Dot

 

can i have solution on this? thank you

8 REPLIES 8
RW9
Diamond | Level 26 RW9
Diamond | Level 26

Then you would use if, where, select or any other conditional statements:

data want;

  set have;

  if <variable> in (.,0) then delete;  /* Assuming numeric  */

  if <variable> in (".","0","0.000") then delete;  /* Assuming character */

run;

 

Or:

data want;

  set have (where=(<variable> not in (.,0) or <variable> not in (".","0","0.000")));

run;

Pamela_JSRCC
Quartz | Level 8

If the variable is numeric, you may want to round the value, especially if it is the result of a computation.  Sometimes floating point caculations result in values so close to zero, that you want to treat them as zero.

Astounding
PROC Star

You say you have a data set ... but is it already a SAS data set?  (It would be extremely unusual for a variable to contain "0.000" in a SAS data set, but it is possible.)

 

Are you looking to apply these conditions to character variables as well?  What if the character variable is merely blank and doesn't contain a dot?

 

 

data_null__
Jade | Level 19

@Astounding wrote:

You say you have a data set ... but is it already a SAS data set?  (It would be extremely unusual for a variable to contain "0.000" in a SAS data set, but it is possible.)

 

 


That's mostly right  zero is zero but it can be made to appear as 0.000

 

40         data _null_;
41            x = 0;
42            put x=f5.3;
43            run;

x=0.000

 

FreelanceReinh
Jade | Level 19

Formatted values can also conceal the true values. So, "0.000" could in fact be 0.000456 (or, in the worst case, something completely different, depending on the format definition).

 

Another potential issue: If you are dealing with numeric values which have been converted to character values, there is a high probability of leading blanks.

 

Please see the examples below:

data have;
do x=., 0, 0.000456; /* numeric */
  xf=x;              /* numeric, formatted (see FORMAT statement) */
  t=put(x, 6.3);     /* character */
  c='#'||t||'#';     /* just to make blanks visible */
  output;
end;
format xf 6.3;
proc print;
run;

data want;
set have;
if x | xf | input(t, 30.);
run;

A numeric value can be used as an IF condition: It is evaluated as true if and only if it is neither zero nor missing.

 

 

Ksharp
Super User

data have;
input x $20.;
if missing(x) then x=.;
cards;
0
00
0.
0.00
0.000
.
..
12
;
run;
data want;
 set have;
 if prxmatch('/^0+$|^0+\.0*$|^\.+$/',strip(x)) then delete;
run;
Tushh
Calcite | Level 5

 so much all of your efforts

 

 

 

issue is resolved now

Tushh
Calcite | Level 5

thank u so much

sas-innovate-2024.png

Join us for SAS Innovate April 16-19 at the Aria in Las Vegas. Bring the team and save big with our group pricing for a limited time only.

Pre-conference courses and tutorials are filling up fast and are always a sellout. Register today to reserve your seat.

 

Register now!

How to Concatenate Values

Learn how use the CAT functions in SAS to join values from multiple variables into a single value.

Find more tutorials on the SAS Users YouTube channel.

Click image to register for webinarClick image to register for webinar

Classroom Training Available!

Select SAS Training centers are offering in-person courses. View upcoming courses for:

View all other training opportunities.

Discussion stats
  • 8 replies
  • 4591 views
  • 0 likes
  • 7 in conversation