<?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 identify missing prefix variables of same suffix variable group in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239809#M44171</link>
    <description>&lt;P&gt;Hello All,&lt;/P&gt;
&lt;P&gt;I spent a day on this and I practically give up. I tried loops, joins and now this, but not able to crack this problem.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Background:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I want to identify variables from a dataset that have different prefixes which grouped by the same suffixes. Should a prefix be missing from a suffix group, we are displayed a comment noting the missing prefix group – see table at bottom of this post.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My approach:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I used proc contents to generate the list of variables. After some minor changes, I created this table below.&lt;/P&gt;
&lt;P&gt;I tried to transpose the data by failed to get what I want.&lt;/P&gt;
&lt;P&gt;If this was successful. I would use case when statements and create the comments. However, I don’t think this would work as there could be quite a few variable groups i.e. instead of 3 columns after transpose, I could have 6, and then the commenting system wont work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What I have:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;How do I get a dataset as below:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;dlv_variables&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;prefix&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;&lt;STRONG&gt;suffix&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;GRP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;INP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;GRP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;GRP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;INP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;INP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;PRE&gt;&lt;STRONG&gt;data chk8reg1;
input dlv_variables $ prefix $ suffix $;
datalines ;
GRP_NOMATCH GRP_ NOMATCH
INP_PIBESC INP_ PIBESC
SCO_PIBESC SCO_ PIBESC
GRP_SCOREAPS GRP_ SCOREAPS
SCO_SCOREAPS SCO_ SCOREAPS
GRP_SCOREFAC GRP_ SCOREFAC
INP_SCOREFAC INP_ SCOREFAC
SCO_SCOREFAC SCO_ SCOREFAC
SCO_TEMP SCO_ TEMP
INP_TRIAL INP_ TRIAL
;&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My failed attempt:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The proc transpose feature using the following code creates the following table:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;proc transpose data =chk8reg1 out=chk8trans (keep= part2 col:);
var dlv_variables;
by suffix;
run;
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="404"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;&lt;STRONG&gt;suffix&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;COL1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;COL2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;COL3&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The issue with this table is that COL1 should only contain distinct groups eg. Variable Part1=”GRP”,&lt;/P&gt;
&lt;P&gt;COL2 should only contain Variable PART1=”INP”&lt;/P&gt;
&lt;P&gt;And so on and so forth. Order/ sequence does not matter as long as the individual columns consist of individual prefix groups.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;In essence, the table should look like this - What I want:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I want a table like this:&lt;/P&gt;
&lt;TABLE width="577"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;suffix&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;COL1 (GRP_)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;COL2 (INP_)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;COL3(SCO_)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;comment&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;GRP_NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;INP_NOMATCH and SCO_NOMATCH missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;GRP_PIBESC missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;GRP_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;INP_SCOREAPS missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;GRP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;GRP_TEMP and INP_TEMP missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;GRP_TRIAL and SCO_TRIAL missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;If there are any missing variables COL1, COL2, COL3, then the result should display the missing variables as shown..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have any other way to approach this problem, please do let me know.&lt;/P&gt;
&lt;P&gt;Many thanks.&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Seb&lt;/P&gt;</description>
    <pubDate>Thu, 17 Dec 2015 18:20:45 GMT</pubDate>
    <dc:creator>sebster24</dc:creator>
    <dc:date>2015-12-17T18:20:45Z</dc:date>
    <item>
      <title>identify missing prefix variables of same suffix variable group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239809#M44171</link>
      <description>&lt;P&gt;Hello All,&lt;/P&gt;
&lt;P&gt;I spent a day on this and I practically give up. I tried loops, joins and now this, but not able to crack this problem.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;Background:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I want to identify variables from a dataset that have different prefixes which grouped by the same suffixes. Should a prefix be missing from a suffix group, we are displayed a comment noting the missing prefix group – see table at bottom of this post.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My approach:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I used proc contents to generate the list of variables. After some minor changes, I created this table below.&lt;/P&gt;
&lt;P&gt;I tried to transpose the data by failed to get what I want.&lt;/P&gt;
&lt;P&gt;If this was successful. I would use case when statements and create the comments. However, I don’t think this would work as there could be quite a few variable groups i.e. instead of 3 columns after transpose, I could have 6, and then the commenting system wont work.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;What I have:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;How do I get a dataset as below:&lt;/P&gt;
&lt;TABLE&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;dlv_variables&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;&lt;STRONG&gt;prefix&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;&lt;STRONG&gt;suffix&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;GRP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;INP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;GRP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;GRP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;INP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;SCO_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="64"&gt;
&lt;P&gt;INP_&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="68"&gt;
&lt;P&gt;TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;PRE&gt;&lt;STRONG&gt;data chk8reg1;
input dlv_variables $ prefix $ suffix $;
datalines ;
GRP_NOMATCH GRP_ NOMATCH
INP_PIBESC INP_ PIBESC
SCO_PIBESC SCO_ PIBESC
GRP_SCOREAPS GRP_ SCOREAPS
SCO_SCOREAPS SCO_ SCOREAPS
GRP_SCOREFAC GRP_ SCOREFAC
INP_SCOREFAC INP_ SCOREFAC
SCO_SCOREFAC SCO_ SCOREFAC
SCO_TEMP SCO_ TEMP
INP_TRIAL INP_ TRIAL
;&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;My failed attempt:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;The proc transpose feature using the following code creates the following table:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;proc transpose data =chk8reg1 out=chk8trans (keep= part2 col:);
var dlv_variables;
by suffix;
run;
&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;TABLE width="404"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;&lt;STRONG&gt;suffix&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;COL1&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;COL2&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;&lt;STRONG&gt;COL3&lt;/STRONG&gt;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;GRP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;SCO_TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="72"&gt;
&lt;P&gt;TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The issue with this table is that COL1 should only contain distinct groups eg. Variable Part1=”GRP”,&lt;/P&gt;
&lt;P&gt;COL2 should only contain Variable PART1=”INP”&lt;/P&gt;
&lt;P&gt;And so on and so forth. Order/ sequence does not matter as long as the individual columns consist of individual prefix groups.&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;&amp;nbsp;&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;&lt;STRONG&gt;In essence, the table should look like this - What I want:&lt;/STRONG&gt;&lt;/P&gt;
&lt;P&gt;I want a table like this:&lt;/P&gt;
&lt;TABLE width="577"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;suffix&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;COL1 (GRP_)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;COL2 (INP_)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;COL3(SCO_)&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;comment&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;GRP_NOMATCH&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;INP_NOMATCH and SCO_NOMATCH missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_PIBESC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;GRP_PIBESC missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;GRP_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_SCOREAPS&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;INP_SCOREAPS missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;GRP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_SCOREFAC&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="112"&gt;
&lt;P&gt;SCO_TEMP&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;GRP_TEMP and INP_TEMP missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="73"&gt;
&lt;P&gt;TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="111"&gt;
&lt;P&gt;INP_TRIAL&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="112"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="170"&gt;
&lt;P&gt;GRP_TRIAL and SCO_TRIAL missing&lt;/P&gt;
&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;
&lt;P&gt;If there are any missing variables COL1, COL2, COL3, then the result should display the missing variables as shown..&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you have any other way to approach this problem, please do let me know.&lt;/P&gt;
&lt;P&gt;Many thanks.&lt;/P&gt;
&lt;P&gt;Regards,&lt;/P&gt;
&lt;P&gt;Seb&lt;/P&gt;</description>
      <pubDate>Thu, 17 Dec 2015 18:20:45 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239809#M44171</guid>
      <dc:creator>sebster24</dc:creator>
      <dc:date>2015-12-17T18:20:45Z</dc:date>
    </item>
    <item>
      <title>Re: identify missing prefix variables of same suffix variable group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239825#M44175</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc freq data=chk8reg1 noprint;
tables suffix*prefix / sparse out=frq;
run;

data result;
length varnm $32
       missv $200;
set frq;
if count then varnm=cats(prefix, suffix);
else missv=cats(prefix, suffix);
run;

data allmissv;
length comment $200;
do until(last.suffix);
  set result;
  by suffix;
  comment=catx(' ', comment, missv);
end;
keep suffix comment;
run;

proc transpose data=result out=trans(drop=_name_);
by suffix;
id prefix;
var varnm;
run;

data want;
merge trans
      allmissv;
by suffix;
if countw(comment)&amp;gt;1 then comment=tranwrd(trim(comment), ' ', ' and ');
if comment ne ' ' then comment=catx(' ', comment, 'missing');
run;

proc print data=want noobs;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Please increase the $200 lengths of character variables if your variable lists or comments are longer.&lt;/P&gt;</description>
      <pubDate>Thu, 17 Dec 2015 19:42:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239825#M44175</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2015-12-17T19:42:20Z</dc:date>
    </item>
    <item>
      <title>Re: identify missing prefix variables of same suffix variable group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239844#M44182</link>
      <description>&lt;P&gt;Try this:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;proc sql;
create table ps as
select * 
from 
    (select distinct prefix from chk8reg1),
    (select distinct suffix from chk8reg1);
create table missingPrefix as
    select * from ps
    except
    select prefix, suffix from chk8reg1
order by suffix, prefix;
quit;

data comments;
length comment $200;
do until(last.suffix);
    set missingPrefix; by suffix;
    comment = catx(" and ", comment, cats(prefix,suffix));
    end;
if not missing(comment) then comment = catt(comment, " missing");
keep suffix comment;
run;

proc sql;
create table wantList as
select a.suffix, a.prefix, a.dlv_variables, b.comment
from chk8reg1 as a inner join comments as b
    on a.suffix=b.suffix
order by suffix, comment;
quit;

proc transpose data=wantList out=want(drop=_name_);
by suffix comment;
var dlv_variables;
id prefix;
run;
&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Dec 2015 20:57:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239844#M44182</guid>
      <dc:creator>PGStats</dc:creator>
      <dc:date>2015-12-17T20:57:33Z</dc:date>
    </item>
    <item>
      <title>Re: identify missing prefix variables of same suffix variable group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239870#M44190</link>
      <description>&lt;P&gt;Another possibility:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;&amp;nbsp;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;PRE&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;FONT face="Courier New" size="3"&gt;&lt;CODE class=" language-sas"&gt;data chk8reg1;
	input (dlv_variables  prefix  suffix) (:$20.);
	datalines;
GRP_NOMATCH GRP_ NOMATCH
INP_PIBESC INP_ PIBESC
SCO_PIBESC SCO_ PIBESC
GRP_SCOREAPS GRP_ SCOREAPS
SCO_SCOREAPS SCO_ SCOREAPS
GRP_SCOREFAC GRP_ SCOREFAC
INP_SCOREFAC INP_ SCOREFAC
SCO_SCOREFAC SCO_ SCOREFAC
SCO_TEMP SCO_ TEMP
INP_TRIAL INP_ TRIAL
;

PROC SORT
	DATA=WORK.CHK8REG1(KEEP=dlv_variables prefix suffix)
	OUT=_1
;
	BY suffix;
RUN;

PROC TRANSPOSE DATA=_1
	OUT=_2(drop=source)
	NAME=Source
	PREFIX=CoL_
;
	BY suffix;
	ID prefix;
	VAR dlv_variables;
RUN;

QUIT;

DATA WANT;
	SET _2;
	LENGTH _TEMP COMMENTS $ 200;
	ARRAY COL COL:;
	DO OVER COL;
		IF MISSING(COL) THEN
			_TEMP=CATS(SCAN(VNAME(COL),2,'_'),'_',SUFFIX);
		ELSE _TEMP='';
		COMMENTS=CATX('/',COMMENTS,_TEMP);
	END;

	IF NOT MISSING(COMMENTS) THEN
		COMMENTS=CATX(' ',COMMENTS,'MISSING');
	DROP _TEMP;
RUN;&lt;/CODE&gt;&lt;/FONT&gt;&lt;/FONT&gt;&lt;/PRE&gt;</description>
      <pubDate>Thu, 17 Dec 2015 22:21:11 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239870#M44190</guid>
      <dc:creator>Haikuo</dc:creator>
      <dc:date>2015-12-17T22:21:11Z</dc:date>
    </item>
    <item>
      <title>Re: identify missing prefix variables of same suffix variable group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239944#M44221</link>
      <description>&lt;P&gt;Thank you Haikuo for the solution.&lt;/P&gt;
&lt;P&gt;Got another weapon in my SAS utility belt &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;Have a good new year celebration.&lt;/P&gt;</description>
      <pubDate>Fri, 18 Dec 2015 08:41:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239944#M44221</guid>
      <dc:creator>sebster24</dc:creator>
      <dc:date>2015-12-18T08:41:51Z</dc:date>
    </item>
    <item>
      <title>Re: identify missing prefix variables of same suffix variable group</title>
      <link>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239945#M44222</link>
      <description>Thank you FreelanceReinhard for the solution. &lt;BR /&gt;THis solution works well too &lt;span class="lia-unicode-emoji" title=":slightly_smiling_face:"&gt;🙂&lt;/span&gt; &lt;BR /&gt;Have a good new year celebration.&lt;BR /&gt;</description>
      <pubDate>Fri, 18 Dec 2015 08:43:02 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/identify-missing-prefix-variables-of-same-suffix-variable-group/m-p/239945#M44222</guid>
      <dc:creator>sebster24</dc:creator>
      <dc:date>2015-12-18T08:43:02Z</dc:date>
    </item>
  </channel>
</rss>

