<?xml version="1.0" encoding="UTF-8"?>
<rss xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#" xmlns:taxo="http://purl.org/rss/1.0/modules/taxonomy/" version="2.0">
  <channel>
    <title>topic Re: assign unscheduled visits in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487997#M127180</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data s ;
input subjid $ visit $ visit_num date:ddmmyy. ;
format date date9. ;
cards ;
101 visit1 1 07-01-2018
101 visit2 2 18-01-2018
101 unc 1 09-01-2018
101 visit3 3 26-01-2018
101 unc 3 03-02-2018
102 visit1 1 07-01-2018
102 visit2 2 18-01-2018
102 unc 3 26-01-2018
102 unc 1 08-01-2018
102 unc 4 03-02-2018
;

proc sort data=s out=temp;
by subjid visit_num;
run;
data temp;
 set temp;
 by subjid;
 if first.subjid then group=0;
 if visit=: 'visit' then group+1;
run;
data want;
 set temp;
 by subjid group;
 if first.group then m=-1;
 m+1;
 if first.visit_num then new_visit=put(visit_num,best8. -l);
  else new_visit=catx('.',visit_num,m);
 drop m;
run;
data s ;
input subjid $ visit $ visit_num date:ddmmyy. ;
format date date9. ;
cards ;
101 visit1 1 07-01-2018
101 visit2 2 18-01-2018
101 unc 1 09-01-2018
101 visit3 3 26-01-2018
101 unc 3 03-02-2018
102 visit1 1 07-01-2018
102 visit2 2 18-01-2018
102 unc 3 26-01-2018
102 unc 1 08-01-2018
102 unc 4 03-02-2018
;

proc sort data=s out=temp;
by subjid visit_num;
run;
data temp;
 set temp;
 by subjid;
 if first.subjid then group=0;
 if visit=: 'visit' then group+1;
run;
data want;
 set temp;
 by subjid group;
 if first.group then m=-1;
 m+1;
 if first.group then new_visit=put(group,best8. -l);
  else new_visit=catx('.',group,m);
 drop m group;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Sat, 18 Aug 2018 11:29:34 GMT</pubDate>
    <dc:creator>Ksharp</dc:creator>
    <dc:date>2018-08-18T11:29:34Z</dc:date>
    <item>
      <title>assign unscheduled visits</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487989#M127174</link>
      <description>&lt;P&gt;data s ;&lt;BR /&gt;input subjid $ visit $ visit_num date:ddmmyy. ;&lt;BR /&gt;format date date9. ;&lt;BR /&gt;cards ;&lt;BR /&gt;101 visit1 1 07-01-2018&lt;BR /&gt;101 visit2 2 18-01-2018&lt;BR /&gt;101 unc 1 09-01-2018&lt;BR /&gt;101 visit3 3 26-01-2018&lt;BR /&gt;101 unc 3 03-02-2018&lt;BR /&gt;102 visit1 1 07-01-2018&lt;BR /&gt;102 visit2 2 18-01-2018&lt;BR /&gt;102 unc 3 26-01-2018&lt;BR /&gt;102 unc 1 08-01-2018&lt;BR /&gt;102 unc 4 03-02-2018&lt;/P&gt;&lt;P&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;in above data has some unscheduled visit how to fill up&lt;/P&gt;&lt;P&gt;like see below&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;subjid&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;visit&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;visit_num&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;date&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;&lt;STRONG&gt;new_visit&lt;/STRONG&gt;&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;101&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;visit1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;07JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;101&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;unc&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;09JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;101&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;visit2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;18JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;101&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;visit3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;26JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;101&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;unc&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03FEB2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3.1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;102&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;visit1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;07JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;102&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;unc&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;08JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;1.1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;102&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;visit2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;18JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;102&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;unc&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;3&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;26JAN2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2.1&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;P&gt;102&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;unc&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;4&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;03FEB2018&lt;/P&gt;&lt;/TD&gt;&lt;TD&gt;&lt;P&gt;2.2&lt;/P&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 18 Aug 2018 10:37:07 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487989#M127174</guid>
      <dc:creator>thanikondharish</dc:creator>
      <dc:date>2018-08-18T10:37:07Z</dc:date>
    </item>
    <item>
      <title>Re: assign unscheduled visits</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487996#M127179</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
    set have;
    if visit^='unc' then new_visit=visit_num;
    else if visit='unc' then new_visit+0.1;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;You don't say what should happen in there are more than 9 "unc" per visit, this method would fail in that case.&lt;/P&gt;</description>
      <pubDate>Sat, 18 Aug 2018 11:26:36 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487996#M127179</guid>
      <dc:creator>PaigeMiller</dc:creator>
      <dc:date>2018-08-18T11:26:36Z</dc:date>
    </item>
    <item>
      <title>Re: assign unscheduled visits</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487997#M127180</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data s ;
input subjid $ visit $ visit_num date:ddmmyy. ;
format date date9. ;
cards ;
101 visit1 1 07-01-2018
101 visit2 2 18-01-2018
101 unc 1 09-01-2018
101 visit3 3 26-01-2018
101 unc 3 03-02-2018
102 visit1 1 07-01-2018
102 visit2 2 18-01-2018
102 unc 3 26-01-2018
102 unc 1 08-01-2018
102 unc 4 03-02-2018
;

proc sort data=s out=temp;
by subjid visit_num;
run;
data temp;
 set temp;
 by subjid;
 if first.subjid then group=0;
 if visit=: 'visit' then group+1;
run;
data want;
 set temp;
 by subjid group;
 if first.group then m=-1;
 m+1;
 if first.visit_num then new_visit=put(visit_num,best8. -l);
  else new_visit=catx('.',visit_num,m);
 drop m;
run;
data s ;
input subjid $ visit $ visit_num date:ddmmyy. ;
format date date9. ;
cards ;
101 visit1 1 07-01-2018
101 visit2 2 18-01-2018
101 unc 1 09-01-2018
101 visit3 3 26-01-2018
101 unc 3 03-02-2018
102 visit1 1 07-01-2018
102 visit2 2 18-01-2018
102 unc 3 26-01-2018
102 unc 1 08-01-2018
102 unc 4 03-02-2018
;

proc sort data=s out=temp;
by subjid visit_num;
run;
data temp;
 set temp;
 by subjid;
 if first.subjid then group=0;
 if visit=: 'visit' then group+1;
run;
data want;
 set temp;
 by subjid group;
 if first.group then m=-1;
 m+1;
 if first.group then new_visit=put(group,best8. -l);
  else new_visit=catx('.',group,m);
 drop m group;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 18 Aug 2018 11:29:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/487997#M127180</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2018-08-18T11:29:34Z</dc:date>
    </item>
    <item>
      <title>Re: assign unscheduled visits</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/488003#M127187</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data s;
	input subjid $ visit $ visit_num date:ddmmyy.;
	format date date9.;
	cards;
101 visit1 1 07-01-2018
101 visit2 2 18-01-2018
101 unc 1 09-01-2018
101 visit3 3 26-01-2018
101 unc 3 03-02-2018
102 visit1 1 07-01-2018
102 visit2 2 18-01-2018
102 unc 3 26-01-2018
102 unc 1 08-01-2018
102 unc 4 03-02-2018
;

proc sort data=s out=h1;
	by subjid date;
run;

data want;
	set h1;
	retain _base _unit;

	if visit=:'visit' then
		do;
			new_visit=visit_num;
			_base=visit_num;
			_unit=0;
		end;
	else
		do;
			_unit+0.1;
			new_visit=_base+_unit;
		end;

		drop _:;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sat, 18 Aug 2018 15:31:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/488003#M127187</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2018-08-18T15:31:26Z</dc:date>
    </item>
    <item>
      <title>Re: assign unscheduled visits</title>
      <link>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/488028#M127198</link>
      <description>&lt;P&gt;I'd like to point out that creating&amp;nbsp;NEW_VISIT as a numeric variable involves the risk of numeric representation issues. (I worked on a clinical research project where exactly this had happened.)&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example (SAS log):&lt;/P&gt;
&lt;PRE&gt;1    data bad;
2    new_visit=1.1;
3    new_visit+0.1;
4    if new_visit=1.2;
5    run;

NOTE: The data set WORK.BAD has &lt;FONT color="#FF0000"&gt;0&lt;/FONT&gt; observations and 1 variables.&lt;/PRE&gt;
&lt;P&gt;&lt;BR /&gt;So, if it &lt;EM&gt;must&lt;/EM&gt; be numeric (e.g. following CDISC recommendations on VISITNUM), precautions should be taken to ensure "clean" values, i.e. &lt;EM&gt;standard&lt;/EM&gt; internal representations of 1.1, 1.2, etc. This can be achieved using the ROUND function, e.g.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;new_visit=round(new_visit, 1e-8);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;(or apply the ROUND function already when&amp;nbsp;NEW_VISIT is assigned a calculated value).&lt;/P&gt;</description>
      <pubDate>Sat, 18 Aug 2018 21:39:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/assign-unscheduled-visits/m-p/488028#M127198</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2018-08-18T21:39:27Z</dc:date>
    </item>
  </channel>
</rss>

