<?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: How to identify a discrepancy from multiple records of a single subject? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397612#M96112</link>
    <description>&lt;P&gt;Since you're new to SAS programming, here are a few items to consider.&amp;nbsp; First, there is not a really simple solution.&amp;nbsp; Second, the exact spelling of variable values matters.&amp;nbsp; These are all different to SAS:&amp;nbsp; Yes, yes, YES.&amp;nbsp; So I'll be perhaps too careful and apply the UPCASE function in making comparisons.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This solution assumes that your data set is already sorted BY SUBJECT:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;n_yesses=0;&lt;/P&gt;
&lt;P&gt;do until (last.subject);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by subject;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if upcase(test) in ("TEST2", "TEST2A") and upcase(YN) = "YES" then n_yesses + 1;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;do until (last.subject);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by subject;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if upcase(test) in ("TEST2", "TEST2A") and n_yesses = 2 then Discrepancy="Yes";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop n_yesses;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The top loop examines all observations for a SUBJECT, and counts the number of yesses.&amp;nbsp; Then the bottom loop works with the exact same observations, assigns DISCREPANCY, and outputs the results.&lt;/P&gt;</description>
    <pubDate>Wed, 20 Sep 2017 20:58:35 GMT</pubDate>
    <dc:creator>Astounding</dc:creator>
    <dc:date>2017-09-20T20:58:35Z</dc:date>
    <item>
      <title>How to identify a discrepancy from multiple records of a single subject?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397606#M96108</link>
      <description>&lt;P&gt;Hi,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I&amp;nbsp;am trying to find out a discrepancy in the data. I am expecting to see either Test2 or Test2A has to&amp;nbsp;report 'Yes' for a unique subject but not both. If both (Test2 and Test2A) reported as 'Yes' then I want to provide Discreapancy as 'Yes'.&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Here is the data what I have:&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;SUBJECT&lt;/TD&gt;&lt;TD&gt;TEST&lt;/TD&gt;&lt;TD&gt;YN&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test2A&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test3&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test2A&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test3&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test4&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test2A&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test3&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I would like to see the output like below:&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;SUBJECT&lt;/TD&gt;&lt;TD&gt;TEST&lt;/TD&gt;&lt;TD&gt;YN&lt;/TD&gt;&lt;TD&gt;Discrepancy&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test2A&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;Test3&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test2A&lt;/TD&gt;&lt;TD&gt;No&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test3&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;Test4&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test1&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test2&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test2A&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;Test3&lt;/TD&gt;&lt;TD&gt;Yes&lt;/TD&gt;&lt;TD&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;I am new to&amp;nbsp;SAS programming, can you please provide any suggestions how to get the output?&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks in advance!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Pakala&lt;/P&gt;</description>
      <pubDate>Wed, 20 Sep 2017 20:44:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397606#M96108</guid>
      <dc:creator>pakala60</dc:creator>
      <dc:date>2017-09-20T20:44:20Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify a discrepancy from multiple records of a single subject?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397612#M96112</link>
      <description>&lt;P&gt;Since you're new to SAS programming, here are a few items to consider.&amp;nbsp; First, there is not a really simple solution.&amp;nbsp; Second, the exact spelling of variable values matters.&amp;nbsp; These are all different to SAS:&amp;nbsp; Yes, yes, YES.&amp;nbsp; So I'll be perhaps too careful and apply the UPCASE function in making comparisons.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;This solution assumes that your data set is already sorted BY SUBJECT:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;data want;&lt;/P&gt;
&lt;P&gt;n_yesses=0;&lt;/P&gt;
&lt;P&gt;do until (last.subject);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by subject;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if upcase(test) in ("TEST2", "TEST2A") and upcase(YN) = "YES" then n_yesses + 1;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;do until (last.subject);&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; set have;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; by subject;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; if upcase(test) in ("TEST2", "TEST2A") and n_yesses = 2 then Discrepancy="Yes";&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&amp;nbsp; output;&lt;/P&gt;
&lt;P&gt;end;&lt;/P&gt;
&lt;P&gt;drop n_yesses;&lt;/P&gt;
&lt;P&gt;run;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The top loop examines all observations for a SUBJECT, and counts the number of yesses.&amp;nbsp; Then the bottom loop works with the exact same observations, assigns DISCREPANCY, and outputs the results.&lt;/P&gt;</description>
      <pubDate>Wed, 20 Sep 2017 20:58:35 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397612#M96112</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2017-09-20T20:58:35Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify a discrepancy from multiple records of a single subject?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397617#M96113</link>
      <description>&lt;P&gt;&lt;STRONG&gt;data&lt;/STRONG&gt; have;&lt;/P&gt;&lt;P&gt;input SUBJECT&amp;nbsp;&amp;nbsp; TEST $&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; YN $;&lt;/P&gt;&lt;P&gt;datalines;&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; Test1 Yes&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; Test2 Yes&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; Test2A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yes&lt;/P&gt;&lt;P&gt;1&amp;nbsp;&amp;nbsp;&amp;nbsp; Test3 Yes&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; Test1 Yes&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; Test2 Yes&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; Test2A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; No&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; Test3 Yes&lt;/P&gt;&lt;P&gt;2&amp;nbsp;&amp;nbsp;&amp;nbsp; Test4 Yes&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; Test1 Yes&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; Test2 Yes&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; Test2A&amp;nbsp;&amp;nbsp;&amp;nbsp;&amp;nbsp; Yes&lt;/P&gt;&lt;P&gt;3&amp;nbsp;&amp;nbsp;&amp;nbsp; Test3 Yes&lt;/P&gt;&lt;P&gt;;&lt;/P&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;&lt;STRONG&gt;data&lt;/STRONG&gt; want;&lt;/P&gt;&lt;P&gt;merge have have(firstobs=&lt;STRONG&gt;2&lt;/STRONG&gt; rename=(TEST=_TEST yn=_yn));&lt;/P&gt;&lt;P&gt;retain discrepancy;&lt;/P&gt;&lt;P&gt;if test='Test2' and _test='Test2A' and YN='Yes' and _yn='Yes' then do;&lt;/P&gt;&lt;P&gt;discrepancy="Yes";&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else if test='Test2A' and discrepancy="Yes" then do;&lt;/P&gt;&lt;P&gt;discrepancy="Yes";&lt;/P&gt;&lt;P&gt;output;&lt;/P&gt;&lt;P&gt;call missing(discrepancy);&lt;/P&gt;&lt;P&gt;end;&lt;/P&gt;&lt;P&gt;else output;&lt;/P&gt;&lt;P&gt;drop _:;&lt;/P&gt;&lt;P&gt;&lt;STRONG&gt;run&lt;/STRONG&gt;;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Sep 2017 21:14:24 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397617#M96113</guid>
      <dc:creator>novinosrin</dc:creator>
      <dc:date>2017-09-20T21:14:24Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify a discrepancy from multiple records of a single subject?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397621#M96114</link>
      <description>&lt;P&gt;Use &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;'s or &lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;''s solution because they are better, but I had to go for a pure SQL solution because that is what I do.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data test_scores;
   input 
	@1 SUBJECT $1.
	@3 TEST $7. 
	@10 YN $3.;
datalines;
1 Test1  Yes
1 Test2  Yes
1 Test2A Yes
1 Test3  Yes
2 Test1  Yes
2 Test2  Yes
2 Test2A No
2 Test3  Yes
2 Test4  Yes
3 Test1  Yes
3 Test2  Yes
3 Test2A Yes
3 Test3  Yes
;
run;


*we can identify the problem cases like this;
proc sql;
	create table problems as
	select a.*, 'Yes' as Discrepancy from 
	(
	select subject, test, yn
	from test_scores
	where test = 'Test2' and YN = 'Yes'
 	union
	select subject, test, yn
	from test_scores
	where test = 'Test2A' and YN = 'Yes'
	) as a
	group by subject
	having count(subject) &amp;gt; 1;
quit;

*and mark them in the whole dataset like this;
proc sql;
	create table all_with_marked_cases as
	select a.subject, a.test, a.yn, b.discrepancy 
	from test_scores a left join problems b
	on a.subject = b.subject and a.test = b.test and a.yn = b.yn;
quit; 

&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Gives us&lt;/P&gt;
&lt;PRE&gt;The SAS System			
			
SUBJECT	TEST	YN	Discrepancy
1	Test1	Yes	
1	Test2	Yes	Yes
1	Test2A	Yes	Yes
1	Test3	Yes	
2	Test1	Yes	
2	Test2	Yes	
2	Test2A	No	
2	Test3	Yes	
2	Test4	Yes	
3	Test1	Yes	
3	Test2	Yes	Yes
3	Test2A	Yes	Yes
3	Test3	Yes	
&lt;/PRE&gt;
&lt;P&gt;You may now return to your regularly scheduled programming.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 20 Sep 2017 21:37:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397621#M96114</guid>
      <dc:creator>HB</dc:creator>
      <dc:date>2017-09-20T21:37:23Z</dc:date>
    </item>
    <item>
      <title>Re: How to identify a discrepancy from multiple records of a single subject?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397638#M96117</link>
      <description>&lt;P&gt;Thank you&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/4954"&gt;@Astounding&lt;/a&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/138205"&gt;@novinosrin&lt;/a&gt;&amp;nbsp;and&amp;nbsp;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/6401"&gt;@HB&lt;/a&gt;!&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Regards,&lt;/P&gt;&lt;P&gt;Pakala&lt;/P&gt;</description>
      <pubDate>Wed, 20 Sep 2017 22:43:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/How-to-identify-a-discrepancy-from-multiple-records-of-a-single/m-p/397638#M96117</guid>
      <dc:creator>pakala60</dc:creator>
      <dc:date>2017-09-20T22:43:34Z</dc:date>
    </item>
  </channel>
</rss>

