<?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: Inserting Missing Rows in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978163#M378579</link>
    <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set labs;
by subjid lbtestcd;
if first.lbtestcd;
source = "Central";
output;
source = "Local";
output;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
    <pubDate>Thu, 30 Oct 2025 21:19:57 GMT</pubDate>
    <dc:creator>Kurt_Bremser</dc:creator>
    <dc:date>2025-10-30T21:19:57Z</dc:date>
    <item>
      <title>Inserting Missing Rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978162#M378578</link>
      <description>&lt;P&gt;I am certain that this will be a simple solution, but I cannot see it.&amp;nbsp; I have a large lab dataset.&amp;nbsp; I have simplified it into the table below.&amp;nbsp; However, there should be both a Central and a Local source (SOURCE) for each lab test (LBTESTCD).&amp;nbsp; I want to ensure that there are 2 lines per test but also that the corresponding RANGE and UNITS are retained.&amp;nbsp; Is there some kind of simple SQL code that I might not be familiar with that could handle this?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Current table:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="width: 750px;" width="750"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="78"&gt;&lt;STRONG&gt;SUBJID&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;SOURCE&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="100"&gt;&lt;STRONG&gt;LBCAT&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="59"&gt;&lt;STRONG&gt;LBTESTCD&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;RANGE&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;UNITS&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Central&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALB&lt;/TD&gt;
&lt;TD&gt;3.62-5.21&lt;/TD&gt;
&lt;TD&gt;g/dL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Central&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALP&lt;/TD&gt;
&lt;TD&gt;33.0-111.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Local&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALP&lt;/TD&gt;
&lt;TD&gt;33.0-111.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Local&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALT&lt;/TD&gt;
&lt;TD&gt;10.0-39.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SAS code to create the above table:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
	create table labs (SUBJID char(11), SOURCE char(10), LBCAT char(30), LBTESTCD char(10), RANGE char(25), UNITS char(10));
	insert into labs (subjid, source, lbcat lbtestcd, range, units)
		values('001-001-001','Central','Serum Chemistry','ALB','3.62-5.21','g/dL')
		values('001-001-001','Central','Serum Chemistry','ALP','33.0-111.0','IU/L')
		values('001-001-001','Local','Serum Chemistry','ALP','33.0-111.0','IU/L')
		values('001-001-001','Local','Serum Chemistry','ALT','10.0-39.0','IU/L');
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Desired table:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE style="width: 750px;" width="750"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="78"&gt;&lt;STRONG&gt;SUBJID&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;SOURCE&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="100"&gt;&lt;STRONG&gt;LBCAT&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="59"&gt;&lt;STRONG&gt;LBTESTCD&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;RANGE&lt;/STRONG&gt;&lt;/TD&gt;
&lt;TD width="64"&gt;&lt;STRONG&gt;UNITS&lt;/STRONG&gt;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Central&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALB&lt;/TD&gt;
&lt;TD&gt;3.62-5.21&lt;/TD&gt;
&lt;TD&gt;g/dL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Local&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALB&lt;/TD&gt;
&lt;TD&gt;3.62-5.21&lt;/TD&gt;
&lt;TD&gt;g/dL&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Central&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALP&lt;/TD&gt;
&lt;TD&gt;33.0-111.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Local&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALP&lt;/TD&gt;
&lt;TD&gt;33.0-111.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Central&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALT&lt;/TD&gt;
&lt;TD&gt;10.0-39.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD&gt;001-001-001&lt;/TD&gt;
&lt;TD&gt;Local&lt;/TD&gt;
&lt;TD&gt;Serum Chemistry&lt;/TD&gt;
&lt;TD&gt;ALT&lt;/TD&gt;
&lt;TD&gt;10.0-39.0&lt;/TD&gt;
&lt;TD&gt;IU/L&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Thu, 30 Oct 2025 21:11:10 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978162#M378578</guid>
      <dc:creator>djbateman</dc:creator>
      <dc:date>2025-10-30T21:11:10Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting Missing Rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978163#M378579</link>
      <description>&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
set labs;
by subjid lbtestcd;
if first.lbtestcd;
source = "Central";
output;
source = "Local";
output;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 30 Oct 2025 21:19:57 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978163#M378579</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2025-10-30T21:19:57Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting Missing Rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978164#M378580</link>
      <description>This is fabulous.  I knew it would be something simple.  I had to make a few tweaks for my detailed situation, but this was a major help.  Thank you so much.</description>
      <pubDate>Thu, 30 Oct 2025 21:57:49 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978164#M378580</guid>
      <dc:creator>djbateman</dc:creator>
      <dc:date>2025-10-30T21:57:49Z</dc:date>
    </item>
    <item>
      <title>Re: Inserting Missing Rows</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978167#M378581</link>
      <description>&lt;P&gt;If you don't want to type 'Local' and 'Central'&amp;nbsp; by hand,you could try this SQL code.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
infile cards expandtabs truncover;
input SUBJID :$40.	SOURCE	 :$40. LBCAT	 &amp;amp;$40. LBTESTCD  :$40.	RANGE  :$40.	UNITS  :$40.;
cards;
001-001-001	Central   Serum Chemistry	  ALB	3.62-5.21	g/dL
001-001-001	Central	  Serum Chemistry	  ALP	33.0-111.0	IU/L
001-001-001	Local	  Serum Chemistry	  ALP	33.0-111.0	IU/L
001-001-001	Local	  Serum Chemistry	  ALT	10.0-39.0	IU/L
;


proc sql;
create table want as
select SUBJID,LBTESTCD,SOURCE,max(LBCAT) as LBCAT,max(RANGE) as RANGE,max(UNITS) as UNITS from
(
select a.*,b.LBCAT,b.RANGE,b.UNITS from
(select * from
(select distinct SUBJID,LBTESTCD from have),(select distinct SOURCE from have)) as a
natural left join 
(select * from have) as b
)
group by SUBJID,LBTESTCD
order by SUBJID,LBTESTCD;
quit;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Fri, 31 Oct 2025 01:48:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Inserting-Missing-Rows/m-p/978167#M378581</guid>
      <dc:creator>Ksharp</dc:creator>
      <dc:date>2025-10-31T01:48:26Z</dc:date>
    </item>
  </channel>
</rss>

