<?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: Logic problem with IF-THEN? in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927191#M364903</link>
    <description>&lt;P&gt;Embarrassing to say, but the solution was in the log the entire time. There was another set of IF-THEN statements for other variables in the same data step. I forgot to add "then" to one of those statements. That caused an error, so the old version of the file (which was based on syntax that did have a logic error) was not overwritten. I fixed the logic error in the syntax, but I kept looking at frequencies based on the old version of the file. I assumed there must still be some logic error, so I kept going down that path instead of checking the basics (like looking for errors in the log!). Psychologists call that "function fixedness".&amp;nbsp; Friday was not a good day.&lt;/P&gt;</description>
    <pubDate>Mon, 06 May 2024 17:02:55 GMT</pubDate>
    <dc:creator>Wolverine</dc:creator>
    <dc:date>2024-05-06T17:02:55Z</dc:date>
    <item>
      <title>Logic problem with IF-THEN?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/926955#M364813</link>
      <description>&lt;P&gt;The fact that I even have to post this tells u what kind of day I'm having &lt;span class="lia-unicode-emoji" title=":disappointed_face:"&gt;😞&lt;/span&gt; If the HLT_ALZDEM variable doesn't have a valid value of 1 or 2 (yes/no), then the variables that are constructed based on HLT_ALZDEM should be given a value of missing.&amp;nbsp; However, they sometimes are given a value of 0 instead.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Below is a portion of the output file, sorted for rows where HLT_ALZDEM&amp;nbsp; is missing. Since missing is clearly not 1 or 2, all ADRD_group and non_ADRD_group values should also be missing. But they're not. Obs 9 and 10 are identical except for these 2 variables., when Obs 9 is missing and Obs 10 is 0 for both.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The only possible explanation I can think of is that there are non-printable characters for some values of HLT_ALZDEM. But even if there are, those non-printable characters are not 1 or 2. Frequencies for HLT_ALZDEM&amp;nbsp; only show values of 1, 2, and missing.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;IF cohort_flag = 1 AND ADM_MA_FLAG_YR = 3
	THEN MA_group = 1; ELSE MA_group = 0;
IF cohort_flag = 0 THEN MA_group = .;
	
IF cohort_flag = 1 AND ADM_FFS_FLAG_YR = 3 
	THEN TM_group = 1; ELSE TM_group = 0;
IF cohort_flag = 0 THEN TM_group = .;
	
IF cohort_flag = 1 AND HLT_ALZDEM = 1 
	THEN ADRD_group = 1; ELSE ADRD_group = 0;
IF cohort_flag = 0 THEN ADRD_group = .;
IF HLT_ALZDEM ^in (1,2) THEN ADRD_group = .;
	
IF cohort_flag = 1 AND HLT_ALZDEM = 2 
	THEN non_ADRD_group = 1; ELSE non_ADRD_group = 0;
IF cohort_flag = 0 THEN non_ADRD_group = .;
IF HLT_ALZDEM ^in (1,2) THEN non_ADRD_group = .;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;TABLE border="1" width="100.0400641025641%"&gt;
&lt;TBODY&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;Obs&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;HLT_ALZDEM&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;cohort_flag&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;MA_group&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;TM_group&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;ADRD_group&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;non_ADRD_group&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;
&lt;P&gt;1&lt;/P&gt;
&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;0&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;2&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;3&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;1&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;4&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;0&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;5&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;0&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;6&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;7&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;1&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;8&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;1&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;9&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;1&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;10&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;1&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;11&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;1&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;12&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;13&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;14&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;15&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;/TR&gt;
&lt;TR&gt;
&lt;TD width="8.333333333333334%"&gt;16&lt;/TD&gt;
&lt;TD width="16.826923076923077%"&gt;&amp;nbsp;&lt;/TD&gt;
&lt;TD width="13.822115384615385%"&gt;1&lt;/TD&gt;
&lt;TD width="12.620192307692307%"&gt;0&lt;/TD&gt;
&lt;TD width="12.379807692307693%"&gt;1&lt;/TD&gt;
&lt;TD width="15.504807692307693%"&gt;0&lt;/TD&gt;
&lt;TD width="20.552884615384613%"&gt;0&lt;/TD&gt;
&lt;/TR&gt;
&lt;/TBODY&gt;
&lt;/TABLE&gt;</description>
      <pubDate>Fri, 03 May 2024 23:29:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/926955#M364813</guid>
      <dc:creator>Wolverine</dc:creator>
      <dc:date>2024-05-03T23:29:17Z</dc:date>
    </item>
    <item>
      <title>Re: Logic problem with IF-THEN?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/926968#M364819</link>
      <description>&lt;P&gt;Using the exact data and code you shared I'm getting a different result. Can you please verify and share sample data that matches your code.&lt;/P&gt;
&lt;P&gt;You haven't shared SAS log. Are there any notes in it about character to numeric conversion?&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;SAS numerical variables can't store non-printable characters. They could store special missings but none of your tests checks for missings where this could hit you.&lt;/P&gt;
&lt;P&gt;And just as a thought: IF there is a custom format applied to your variables that prints certain values as missing then you could be misled. To ensure this is not the case add the following line to your data step.&lt;/P&gt;
&lt;PRE&gt;format HLT_ALZDEM cohort_flag best32.;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Here your exact data and code to demonstrate that the outcome is different than what you describe.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
  infile datalines dsd dlm=',' truncover;
  input Obs HLT_ALZDEM cohort_flag src_MA_group src_TM_group src_ADRD_group src_non_ADRD_group;
datalines;
1,,0,,,,
2,,1,0,1,0,0
3,,1,1,0,,
4,,0,,,,
5,,0,,,,
6,,1,0,1,,
7,,1,1,0,,
8,,1,1,0,,
9,,1,1,0,,
10,,1,1,0,0,0
11,,1,1,0,,
12,,1,0,1,,
13,,1,0,1,,
14,,1,0,1,,
15,,1,0,1,,
16,,1,0,1,0,0
;
run;

data want;
  length  Obs HLT_ALZDEM cohort_flag
          src_MA_group MA_group src_TM_group TM_group 
          src_ADRD_group ADRD_group src_non_ADRD_group non_ADRD_group
          8;
  set have;
  IF cohort_flag = 1 AND ADM_MA_FLAG_YR = 3
  	THEN MA_group = 1; ELSE MA_group = 0;
  IF cohort_flag = 0 THEN MA_group = .;
  	
  IF cohort_flag = 1 AND ADM_FFS_FLAG_YR = 3 
  	THEN TM_group = 1; ELSE TM_group = 0;
  IF cohort_flag = 0 THEN TM_group = .;
  	
  IF cohort_flag = 1 AND HLT_ALZDEM = 1 
  	THEN ADRD_group = 1; ELSE ADRD_group = 0;
  IF cohort_flag = 0 THEN ADRD_group = .;
  IF HLT_ALZDEM ^in (1,2) THEN ADRD_group = .;
  	
  IF cohort_flag = 1 AND HLT_ALZDEM = 2 
  	THEN non_ADRD_group = 1; ELSE non_ADRD_group = 0;
  IF cohort_flag = 0 THEN non_ADRD_group = .;
  IF HLT_ALZDEM ^in (1,2) THEN non_ADRD_group = .;
run;

proc print data=want;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="Patrick_0-1714786188632.png" style="width: 767px;"&gt;&lt;img src="https://communities.sas.com/t5/image/serverpage/image-id/96164iC322B4D4045284AC/image-dimensions/767x69?v=v2" width="767" height="69" role="button" title="Patrick_0-1714786188632.png" alt="Patrick_0-1714786188632.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;And below not changing your logic but ordering the conditions a bit differently so they become easier to read and maintain:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want;
  length  Obs HLT_ALZDEM cohort_flag
          src_MA_group MA_group src_TM_group TM_group 
          src_ADRD_group ADRD_group src_non_ADRD_group non_ADRD_group
          8;
  set have;

  IF cohort_flag = 0 THEN MA_group = .;
  else IF cohort_flag = 1 AND ADM_MA_FLAG_YR = 3 THEN MA_group = 1; 
  ELSE MA_group = 0;
  	
  IF cohort_flag = 0 THEN TM_group = .;
  else IF cohort_flag = 1 AND ADM_FFS_FLAG_YR = 3 THEN TM_group = 1; 
  ELSE TM_group = 0;
  	
  IF HLT_ALZDEM ^in (1,2) THEN ADRD_group = .;
  else IF cohort_flag = 0 THEN ADRD_group = .;
  else IF cohort_flag = 1 AND HLT_ALZDEM = 1 THEN ADRD_group = 1; 
  ELSE ADRD_group = 0;
  	
  IF HLT_ALZDEM ^in (1,2) THEN non_ADRD_group = .;
  else IF cohort_flag = 0 THEN non_ADRD_group = .;
  else IF cohort_flag = 1 AND HLT_ALZDEM = 2 THEN non_ADRD_group = 1; 
  ELSE non_ADRD_group = 0;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 May 2024 01:55:42 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/926968#M364819</guid>
      <dc:creator>Patrick</dc:creator>
      <dc:date>2024-05-04T01:55:42Z</dc:date>
    </item>
    <item>
      <title>Re: Logic problem with IF-THEN?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/926973#M364821</link>
      <description>&lt;P&gt;The usual place to begin would be to examine the data.&amp;nbsp; In particular take a look at COHORT_FLAG and see if it contains unusual values.&amp;nbsp; They don't have to be unprintable characters.&amp;nbsp; They could be values of 2 or 3 instead of what you expect.&amp;nbsp; So just run a PROC FREQ to be sure.&amp;nbsp;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Consider how you set up your logic:&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;IF cohort_flag = 1 AND HLT_ALZDEM = 1 
	THEN ADRD_group = 1; ELSE ADRD_group = 0;
IF cohort_flag = 0 THEN ADRD_group = .;
IF HLT_ALZDEM ^in (1,2) THEN ADRD_group = .;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This logic could easily give you a value of 0 for ADRD_group when cohort_flag is 3.&amp;nbsp; Remember, the ELSE statement applies to either of these conditions:&lt;/P&gt;
&lt;UL&gt;
&lt;LI&gt;COHORT_FLAG is not 1&lt;/LI&gt;
&lt;LI&gt;HLT_ALZDEM is not 1&lt;/LI&gt;
&lt;/UL&gt;
&lt;P&gt;That could be a logic problem resolved by checking the data.&amp;nbsp; In fact, a general approach to solving this would be to take some observations that you believe are coming out incorrectly, and examine the incoming data values for that observation.&lt;/P&gt;</description>
      <pubDate>Sat, 04 May 2024 02:28:37 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/926973#M364821</guid>
      <dc:creator>Astounding</dc:creator>
      <dc:date>2024-05-04T02:28:37Z</dc:date>
    </item>
    <item>
      <title>Re: Logic problem with IF-THEN?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927026#M364851</link>
      <description>&lt;P&gt;What I like to do in such cases is to create a list or cross-tabulation of &lt;EM&gt;all possible combinations&lt;/EM&gt;, where the "possibilities" only go as far as the IF/ELSE conditions distinguish them. According to your code, the four new variables are derived independently of each other, each depending on just two existing variables, so cross-tabulations are feasible.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Cross-tabulations for &lt;FONT face="courier new,courier"&gt;MA_group&lt;/FONT&gt; (analogous for &lt;FONT face="courier new,courier"&gt;TM_group&lt;/FONT&gt;) and &lt;FONT face="courier new,courier"&gt;ADRD_group&lt;/FONT&gt; (similar for &lt;FONT face="courier new,courier"&gt;non_ADRD_group&lt;/FONT&gt;)&lt;FONT face="helvetica"&gt;:&lt;/FONT&gt;&lt;/P&gt;
&lt;PRE&gt;&lt;U&gt;&lt;STRONG&gt;MA_group&lt;/STRONG&gt;&lt;/U&gt;    | &lt;FONT color="#800080"&gt;ADM_MA_FLAG_YR&lt;/FONT&gt;
&lt;FONT color="#00CCFF"&gt;cohort_flag&lt;/FONT&gt; |   &lt;FONT color="#800080"&gt;3&lt;/FONT&gt;   |  &lt;FONT color="#800080"&gt;ne 3&lt;/FONT&gt;
------------+-------+--------
         &lt;FONT color="#00CCFF"&gt;0&lt;/FONT&gt;  |   &lt;STRONG&gt;.&lt;/STRONG&gt;   |    &lt;STRONG&gt;.&lt;/STRONG&gt;
------------+-------+--------
         &lt;FONT color="#00CCFF"&gt;1&lt;/FONT&gt;  |   &lt;STRONG&gt;1&lt;/STRONG&gt;   |    &lt;STRONG&gt;0&lt;/STRONG&gt;
------------+-------+--------
 &lt;FONT color="#00CCFF"&gt;^in (0,1)&lt;/FONT&gt;  |   &lt;STRONG&gt;0&lt;/STRONG&gt;   |    &lt;STRONG&gt;0&lt;/STRONG&gt;
-----------------------------
&lt;/PRE&gt;
&lt;PRE&gt;&lt;U&gt;&lt;STRONG&gt;ADRD_group&lt;/STRONG&gt;&lt;/U&gt;  |        &lt;FONT color="#800080"&gt;HLT_ALZDEM&lt;/FONT&gt;
&lt;FONT color="#00CCFF"&gt;cohort_flag&lt;/FONT&gt; |   &lt;FONT color="#800080"&gt;1&lt;/FONT&gt;   |   &lt;FONT color="#800080"&gt;2&lt;/FONT&gt;   | &lt;FONT color="#800080"&gt;^in (1,2)&lt;/FONT&gt;
------------+-------+-------+-----------
         &lt;FONT color="#00CCFF"&gt;0&lt;/FONT&gt;  |   &lt;STRONG&gt;.&lt;/STRONG&gt;   |   &lt;STRONG&gt;.&lt;/STRONG&gt;   |     &lt;STRONG&gt;.&lt;/STRONG&gt;
------------+-------+-------+-----------
         &lt;FONT color="#00CCFF"&gt;1&lt;/FONT&gt;  |   &lt;STRONG&gt;1&lt;/STRONG&gt;   |   &lt;STRONG&gt;0&lt;/STRONG&gt;   |     &lt;STRONG&gt;.&lt;/STRONG&gt;
------------+-------+-------+-----------
 &lt;FONT color="#00CCFF"&gt;^in (0,1)&lt;/FONT&gt;  |   &lt;STRONG&gt;0&lt;/STRONG&gt;   |   &lt;STRONG&gt;0&lt;/STRONG&gt;   |     &lt;STRONG&gt;.&lt;/STRONG&gt;
----------------------------------------&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;I derived these cross-tabulations from your code. &lt;EM&gt;You&lt;/EM&gt; would better use the specifications as a basis for them and &lt;EM&gt;then&lt;/EM&gt; start writing the code according to the cross-tabulations.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&lt;EM&gt;If&lt;/EM&gt; the above&amp;nbsp;cross-tabulations and those for &lt;FONT face="courier new,courier"&gt;TM_group&lt;/FONT&gt; (with &lt;FONT face="courier new,courier"&gt;ADM_FFS_FLAG_YR&lt;/FONT&gt; replacing &lt;FONT face="courier new,courier"&gt;ADM_MA_FLAG_YR&lt;/FONT&gt;) and&amp;nbsp;&lt;FONT face="courier new,courier"&gt;non_ADRD_group&lt;/FONT&gt;&amp;nbsp;(with "&lt;STRONG&gt;&lt;FONT face="courier new,courier"&gt;1 | 0&lt;/FONT&gt;&lt;/STRONG&gt;" switched to "&lt;FONT face="courier new,courier"&gt;&lt;STRONG&gt;0 | 1&lt;/STRONG&gt;&lt;/FONT&gt;") are in accordance with the specifications, the code could be simplified to:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data want(drop=_c);
set have;
if cohort_flag ne 0 then do;
  _c=(cohort_flag=1);
  MA_group=(_c &amp;amp; ADM_MA_FLAG_YR =3);
  TM_group=(_c &amp;amp; ADM_FFS_FLAG_YR=3);
  if HLT_ALZDEM in (1,2) then do;
        ADRD_group=(_c &amp;amp; HLT_ALZDEM=1);
    non_ADRD_group=(_c &amp;amp; HLT_ALZDEM=2);
  end;
end;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Important: This assumes that the new variables are not contained in dataset HAVE. Otherwise, they must be dropped from HAVE with a DROP= dataset option (or initialized to missing after the SET statement). Also, all variables involved are assumed to be numeric.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;The derived variables are &lt;EM&gt;either&lt;/EM&gt; set to 1 (for TRUE) or 0 (for FALSE) resulting from a Boolean expression such as&amp;nbsp;&lt;FONT face="courier new,courier"&gt;_c &amp;amp; HLT_ALZDEM=1&lt;/FONT&gt;&amp;nbsp;(i.e., &lt;FONT face="courier new,courier"&gt;cohort_flag=1 &amp;amp; HLT_ALZDEM=1&lt;/FONT&gt;)&amp;nbsp;&lt;EM&gt;or&lt;/EM&gt; they are left missing if an IF condition prevents the execution of the assignment statement.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;If you are in doubt about the content of a numeric variable, use the &lt;A href="https://documentation.sas.com/doc/en/pgmsascdc/9.4_3.5/leforinforref/n0ueabv26pr2fwn19uxk2f4bf10y.htm" target="_blank" rel="noopener"&gt;HEX16. format&lt;/A&gt;.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Example log:&lt;/P&gt;
&lt;PRE&gt;378   data _null_;
379   have=9.9/3.3;
380   want=3;
381   put (have want)(=hex16./);
382   run;

have=400800000000000&lt;STRONG&gt;&lt;FONT color="#FF0000"&gt;1&lt;/FONT&gt;&lt;/STRONG&gt;
want=400800000000000&lt;STRONG&gt;0&lt;/STRONG&gt;&lt;/PRE&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Sat, 04 May 2024 14:59:00 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927026#M364851</guid>
      <dc:creator>FreelanceReinh</dc:creator>
      <dc:date>2024-05-04T14:59:00Z</dc:date>
    </item>
    <item>
      <title>Re: Logic problem with IF-THEN?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927191#M364903</link>
      <description>&lt;P&gt;Embarrassing to say, but the solution was in the log the entire time. There was another set of IF-THEN statements for other variables in the same data step. I forgot to add "then" to one of those statements. That caused an error, so the old version of the file (which was based on syntax that did have a logic error) was not overwritten. I fixed the logic error in the syntax, but I kept looking at frequencies based on the old version of the file. I assumed there must still be some logic error, so I kept going down that path instead of checking the basics (like looking for errors in the log!). Psychologists call that "function fixedness".&amp;nbsp; Friday was not a good day.&lt;/P&gt;</description>
      <pubDate>Mon, 06 May 2024 17:02:55 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927191#M364903</guid>
      <dc:creator>Wolverine</dc:creator>
      <dc:date>2024-05-06T17:02:55Z</dc:date>
    </item>
    <item>
      <title>Re: Logic problem with IF-THEN?</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927362#M364970</link>
      <description>&lt;P&gt;&lt;a href="https://communities.sas.com/t5/user/viewprofilepage/user-id/43822"&gt;@Wolverine&lt;/a&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Don't be shy.&amp;nbsp; Mark your explanation as the solution, so we all know the problem has been solved.&lt;/P&gt;</description>
      <pubDate>Tue, 07 May 2024 22:22:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Logic-problem-with-IF-THEN/m-p/927362#M364970</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2024-05-07T22:22:18Z</dc:date>
    </item>
  </channel>
</rss>

