BookmarkSubscribeRSS Feed
🔒 This topic is solved and locked. Need further help from the community? Please sign in and ask a new question.
rj438
Calcite | Level 5
Many, unfortunately. Someone put the average of a state data for many variables to fill missing for each county/city. I don't want to use the average, so need to get rid of them!


novinosrin
Tourmaline | Level 20
data have;
input ID $ V1 V2 V3;
cards;
A  12 13 14
A 15 14 14
A 12 15 14
;
data _have;
set have;
array t v:;
grp=_n_;
do i=1 to dim(t);
_v=t(i);
__v=vname(t(i));
output;
end;
keep id _: grp;
run;
proc sort data=_have out=w;
by id __v _v;
run;
data _w;
set w;
by id __v _v;
if not(first._v and last._v) then call missing(_v);
run;

proc sort data=_w out=_w1;
by id grp;
run;
proc transpose data=_w1 out=want(drop=grp _:);
by id grp;
var _v;
id __v;
run;
Ksharp
Super User

Here is a Hash Table solution.

 

 

data have;
  input id $ v1 v2 v3;
  n+1;
datalines;
A  12 13 14
A 15 14 14
A 12 15 14
;
run;
proc transpose data=have out=temp;
by id n;
var v:;
run;
proc sort data=temp nouniquekey;
by id _name_ col1;
run;

data want;
 if _n_=1 then do;
   if 0 then set temp;
   declare hash h(dataset:'temp');
   h.definekey('id','_name_','col1');
   h.definedone();
 end;
set have;
array x{*} v:;
do i=1 to dim(x);
 _name_=vname(x{i});col1=x{i};
 if h.check()=0 then call missing(x{i});
end;
drop i n  _name_ col1;
run;


proc print;run;

SAS Innovate 2025: Save the Date

 SAS Innovate 2025 is scheduled for May 6-9 in Orlando, FL. Sign up to be first to learn about the agenda and registration!

Save the date!

How to connect to databases in SAS Viya

Need to connect to databases in SAS Viya? SAS’ David Ghan shows you two methods – via SAS/ACCESS LIBNAME and SAS Data Connector SASLIBS – in this video.

Find more tutorials on the SAS Users YouTube channel.

Discussion stats
  • 17 replies
  • 2956 views
  • 0 likes
  • 7 in conversation