<?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: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889338#M351361</link>
    <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 1 -&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;Keep observations where event1 is linked to event2 and have the same ID_1 and same ID_2.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS10&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 2 -&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;Keep observations where different event1 is linked to the same event2 and has the same ID_1.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS4&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS7&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS11&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 3 -&lt;SPAN&gt;Keep observations where event1 is linked to event2 one time and both ID_1 and ID_2 is missing.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS13&lt;/TD&gt;&lt;TD&gt;OWT12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 4 -&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;Keep observations where same event1 matches two different event2 and has same ID_2.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS17&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
    <pubDate>Tue, 15 Aug 2023 13:07:27 GMT</pubDate>
    <dc:creator>r-lee-484</dc:creator>
    <dc:date>2023-08-15T13:07:27Z</dc:date>
    <item>
      <title>Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889208#M351299</link>
      <description>&lt;P&gt;I have one large dataset where I need to filter out observations that do not abide by the 4 rules below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;1- Keep observations where event1 is linked to event2 and have the same ID_1 and same ID_2.&lt;/P&gt;&lt;P&gt;2- Keep observations where different event1 is linked to the same event2 and has the same ID_1.&lt;/P&gt;&lt;P&gt;3-Keep observations where event1 is linked to event2 one time and both ID_1 and ID_2 is missing.&lt;/P&gt;&lt;P&gt;4-Keep observations where same event1 matches two different event2 and has same ID_2.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is a small example of dataset with 1 example for each rule:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;423&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;423&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;423&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS1&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;423&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;423&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;423&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;RSS10&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;OWT2&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;5&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#993366"&gt;do not keep/delete&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;RSS4&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;OWT3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;12&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;RSS7&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;OWT3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;12&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;RSS11&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;OWT3&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#339966"&gt;do not keep/delete&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;&lt;FONT color="#0000FF"&gt;RSS13&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#0000FF"&gt;OWT12&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#0000FF"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#0000FF"&gt;.&lt;/FONT&gt;&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS17&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is the final desired dataset. I would like to create a New_ID showing distinct links based off the rules.&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;New_ID&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS4&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS7&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS13&lt;/TD&gt;&lt;TD&gt;OWT12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;4&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;How can I go about programming this with loops and sql while maintaining all the rules in one dataset?&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;</description>
      <pubDate>Mon, 14 Aug 2023 17:07:03 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889208#M351299</guid>
      <dc:creator>r-lee-484</dc:creator>
      <dc:date>2023-08-14T17:07:03Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889317#M351353</link>
      <description>Can you please specify for each observation the rule or rules that is/are involved in keeping the observation?</description>
      <pubDate>Tue, 15 Aug 2023 10:25:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889317#M351353</guid>
      <dc:creator>JosvanderVelden</dc:creator>
      <dc:date>2023-08-15T10:25:16Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889337#M351360</link>
      <description>&lt;P&gt;Sorry, but I have hard time to understand the rules given under each bullet, what does "linked" and "same" means in this data context?&lt;/P&gt;
&lt;P&gt;Best would be to make examples under each bullet (1-4).&lt;/P&gt;</description>
      <pubDate>Tue, 15 Aug 2023 12:39:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889337#M351360</guid>
      <dc:creator>LinusH</dc:creator>
      <dc:date>2023-08-15T12:39:20Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889338#M351361</link>
      <description>&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 1 -&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;Keep observations where event1 is linked to event2 and have the same ID_1 and same ID_2.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS10&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 2 -&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;Keep observations where different event1 is linked to the same event2 and has the same ID_1.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS4&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS7&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS11&lt;/TD&gt;&lt;TD&gt;OWT3&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 3 -&lt;SPAN&gt;Keep observations where event1 is linked to event2 one time and both ID_1 and ID_2 is missing.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS13&lt;/TD&gt;&lt;TD&gt;OWT12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 4 -&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;Keep observations where same event1 matches two different event2 and has same ID_2.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS17&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Aug 2023 13:07:27 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889338#M351361</guid>
      <dc:creator>r-lee-484</dc:creator>
      <dc:date>2023-08-15T13:07:27Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889342#M351364</link>
      <description>&lt;P&gt;Using these two examples to explain "same" and "linked".&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Each row is a "link". event1 is linked to event2.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;Same means the value in event1/event2/ID_1/ID_2 occurs more than once. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 3 -&lt;SPAN&gt;Keep observations where event1 is linked to event2 one time and both ID_1 and ID_2 is missing.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;RSS13 is linked to OWT12. RSS13 only occurs one time in the combined dataset above.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS13&lt;/TD&gt;&lt;TD&gt;OWT12&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Rule 4 -&amp;nbsp;&amp;nbsp;&lt;SPAN&gt;Keep observations where same event1 matches two different event2 and has same ID_2.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;RSS9 is linked to both OWT5 and OWT8 and has ID_2 = 14 for both links.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;RSS17 is also linked to OWT8 and has ID_2 = 14 for this one link.&lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;"Same event1" means RSS9 appears twice in event1 and is linked to two different event2 (OWT5 and OWT8) whereas RSS17 only appears one time. &lt;/SPAN&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;SPAN&gt;These three links all have the same ID_2 (14) but do not keep RSS17 - OWT8 link because it doesn't the follow the rule where there has to be the same event matched to 2 different event2. RSS17 is only matched to a single event2.&amp;nbsp;&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE border="0" cellspacing="0" cellpadding="0"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT5&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS9&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS17&lt;/TD&gt;&lt;TD&gt;OWT8&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;14&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Hope this is more clear.&lt;BR /&gt;&lt;BR /&gt;&lt;/P&gt;</description>
      <pubDate>Tue, 15 Aug 2023 13:24:31 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889342#M351364</guid>
      <dc:creator>r-lee-484</dc:creator>
      <dc:date>2023-08-15T13:24:31Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889344#M351365</link>
      <description>&lt;P&gt;How about providing your sample data in the form of a working data step?&amp;nbsp; You will be more likely to get actual tested suggestions.&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Help us help you.&lt;/P&gt;</description>
      <pubDate>Tue, 15 Aug 2023 13:46:13 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889344#M351365</guid>
      <dc:creator>mkeintz</dc:creator>
      <dc:date>2023-08-15T13:46:13Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889411#M351398</link>
      <description>&lt;P&gt;data have;&lt;BR /&gt;infile cards expandtabs;&lt;BR /&gt;input (event1 event2 ID_1 ID_2) ($);&lt;BR /&gt;cards;&lt;BR /&gt;RSS1 OWT1 423 5&lt;BR /&gt;RSS2 OWT1 423 5&lt;BR /&gt;RSS3 OWT1 423 5&lt;BR /&gt;RSS1 OWT2 423 5&lt;BR /&gt;RSS2 OWT2 423 5&lt;BR /&gt;RSS3 OWT2 423 5&lt;BR /&gt;RSS10 OWT2 . 5&lt;BR /&gt;RSS4 OWT3 12 .&lt;BR /&gt;RSS7 OWT3 12 .&lt;BR /&gt;RSS11 OWT3 . .&lt;BR /&gt;RSS13 OWT12 . .&lt;BR /&gt;RSS9 OWT5 . 14&lt;BR /&gt;RSS9 OWT8 . 14&lt;BR /&gt;RSS17 OWT8 . 14&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Inner join doesn't work to retain the first 6 observations. How do I get rid of RSS10 linked with OWT2 ?&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;proc sql;&lt;BR /&gt;create table rule1 as&lt;BR /&gt;select a.*&lt;BR /&gt;from have a inner join have b&lt;BR /&gt;on a.ID_1=b.ID_1 and a.ID_2=b.ID_2&lt;BR /&gt;where a.event1 NE b.event2;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Desired output:&lt;/P&gt;&lt;P&gt;Rule 1 -&amp;nbsp;&lt;SPAN&gt;&amp;nbsp;Keep observations where event1 is linked to event2 and have the same ID_1 and same ID_2.&lt;/SPAN&gt;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;event1&lt;/TD&gt;&lt;TD&gt;event2&lt;/TD&gt;&lt;TD&gt;ID_1&lt;/TD&gt;&lt;TD&gt;ID_2&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT1&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS1&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS2&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS3&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;423&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;RSS10&lt;/TD&gt;&lt;TD&gt;OWT2&lt;/TD&gt;&lt;TD&gt;.&lt;/TD&gt;&lt;TD&gt;5&lt;/TD&gt;&lt;TD&gt;do not keep/delete&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Tue, 15 Aug 2023 18:24:34 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889411#M351398</guid>
      <dc:creator>r-lee-484</dc:creator>
      <dc:date>2023-08-15T18:24:34Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889478#M351439</link>
      <description>&lt;P&gt;Analyze the code and results from execution with the code below:&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data have;
   infile cards expandtabs;
   input (event1 event2 ID_1 ID_2) ($);
cards;
RSS1 OWT1 423 5
RSS2 OWT1 423 5
RSS3 OWT1 423 5
RSS1 OWT2 423 5
RSS2 OWT2 423 5
RSS3 OWT2 423 5
RSS10 OWT2 . 5
RSS4 OWT3 12 .
RSS7 OWT3 12 .
RSS11 OWT3 . .
RSS13 OWT12 . .
RSS9 OWT5 . 14
RSS9 OWT8 . 14
RSS17 OWT8 . 14
;

data rule1assist;
   set have;
   rule1assist = catx('-', trim(ID_1), trim(ID_2));
run;

proc sort data=rule1assist;
   by rule1assist;
run;

proc sort data=rule1assist out=rule1tmp(keep=rule1assist);
   by rule1assist;
run;

data rule1tmp;
   set rule1tmp;
   if first.rule1assist eq 1 AND last.rule1assist eq 1 then delete;
   by rule1assist;
run;

proc sort data=rule1tmp nodup;
   by rule1assist;
run;

proc sql;
   create table rule1 as
   select event1, event2, ID_1, ID_2, a.rule1assist
   from rule1assist a, rule1tmp b
   where a.rule1assist eq b.rule1assist
   ;
quit;

data rule2assist;
   set rule1;
   rule2assist = catx('-', trim(event2), trim(ID_1));
run;

proc sort data=rule2assist;
   by rule2assist;
run;

proc sort data=rule2assist out=rule2tmp(keep=rule2assist);
   by rule2assist;
run;

data rule2tmp;
   set rule2tmp;
   if first.rule2assist eq 1 AND last.rule2assist eq 1 then delete;
   by rule2assist;
run;

proc sort data=rule2tmp nodup;
   by rule2assist;
run;

proc sql;
   create table rule2 as
   select event1, event2, ID_1, ID_2, 
          a.rule1assist, a.rule2assist
   from rule2assist a, rule2tmp b
   where a.rule2assist eq b.rule2assist
   ;
quit;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;This seems to implement the rule 1 correctly but not rule 2. Because after applying the rule 2 deletions your rule 3 cannot be applied anymore. So I suspect I am not applying the correct programming logic for rule 2. The code for rule 1 could work for you though.&lt;/P&gt;</description>
      <pubDate>Wed, 16 Aug 2023 09:47:26 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889478#M351439</guid>
      <dc:creator>JosvanderVelden</dc:creator>
      <dc:date>2023-08-16T09:47:26Z</dc:date>
    </item>
    <item>
      <title>Re: Data Cleaning - remove events based off linkage rules between 2 Events and 2 IDs</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889680#M351525</link>
      <description>&lt;P&gt;Thank you for your help. I've adapted your code to generate 4 different sets of code (1 for each rule) and then used a final data step to combine the data.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am struggling with Rule 3.&amp;nbsp; I would like to keep any observations that have distinct event1 and event2 and has missing ID_1 and ID_2. My code keeps 2 rows of data and I only want the row with RSS13 OWT12. How can I modify the code for rule 3 for desired output? See code below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;data have;&lt;BR /&gt;infile cards expandtabs;&lt;BR /&gt;input (event1 event2 ID_1 ID_2) ($);&lt;BR /&gt;cards;&lt;BR /&gt;RSS1 OWT1 423 5&lt;BR /&gt;RSS2 OWT1 423 5&lt;BR /&gt;RSS3 OWT1 423 5&lt;BR /&gt;RSS1 OWT2 423 5&lt;BR /&gt;RSS2 OWT2 423 5&lt;BR /&gt;RSS3 OWT2 423 5&lt;BR /&gt;RSS10 OWT2 . 5&lt;BR /&gt;RSS4 OWT3 12 .&lt;BR /&gt;RSS7 OWT3 12 .&lt;BR /&gt;RSS11 OWT3 . .&lt;BR /&gt;RSS13 OWT12 . .&lt;BR /&gt;RSS9 OWT5 . 14&lt;BR /&gt;RSS9 OWT8 . 14&lt;BR /&gt;RSS17 OWT8 . 14&lt;BR /&gt;;&lt;/P&gt;&lt;P&gt;/* Code for Keeping observations that meet Rule 1*/&lt;BR /&gt;data rule1assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule1assist = catx('-', trim(ID_1), trim(ID_2));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule1assist;&lt;BR /&gt;by rule1assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule1assist out=rule1tmp(keep=rule1assist);&lt;BR /&gt;by rule1assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data rule1tmp;&lt;BR /&gt;set rule1tmp;&lt;BR /&gt;if first.rule1assist eq 1 AND last.rule1assist eq 1 then delete;&lt;BR /&gt;by rule1assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule1tmp nodup;&lt;BR /&gt;by rule1assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule1 as&lt;BR /&gt;select event1, event2, ID_1, ID_2, a.rule1assist&lt;BR /&gt;from rule1assist a, rule1tmp b&lt;BR /&gt;where a.rule1assist eq b.rule1assist and ID_1 ne " " and ID_2 ne " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Code for Keeping observations that meet Rule 2*/&lt;BR /&gt;data rule2assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule2assist = catx('-', trim(event2), trim(ID_1));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule2assist;&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule2assist out=rule2tmp(keep=rule2assist);&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rule2tmp;&lt;BR /&gt;set rule2tmp;&lt;BR /&gt;if first.rule2assist eq 1 AND last.rule2assist eq 1 then delete;&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule2tmp nodup;&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule2 as&lt;BR /&gt;select event1, event2, ID_1, ID_2, a.rule2assist&lt;BR /&gt;from rule2assist a, rule2tmp b&lt;BR /&gt;where a.rule2assist eq b.rule2assist and ID_2 eq " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Code for Keeping observations that meet Rule 3...this doesn't work*/&lt;/P&gt;&lt;P&gt;data rule3assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule3assist = catx('-', trim(event1), trim(event2),trim(ID_1), trim(ID_2));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule3assist;&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule3assist out=rule3tmp(keep=rule3assist);&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rule3tmp;&lt;BR /&gt;set rule3tmp;&lt;BR /&gt;if first.rule3assist eq 1 AND last.rule3assist eq 1 ;&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule3tmp nodup;&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule3 as&lt;BR /&gt;select distinct *&lt;BR /&gt;from rule3assist a, rule3tmp b&lt;BR /&gt;where a.rule3assist eq b.rule3assist and ID_2 eq " " and ID_1 eq " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*Code for Keeping observations that meet Rule 4*/&lt;/P&gt;&lt;P&gt;data rule4assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule4assist = catx('-', trim(event1), trim(ID_2));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule4assist;&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule4assist out=rule4tmp(keep=rule4assist);&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rule4tmp;&lt;BR /&gt;set rule4tmp;&lt;BR /&gt;if first.rule4assist eq 1 AND last.rule4assist eq 1 then delete;&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule4tmp nodup;&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule4 as&lt;BR /&gt;select event1, event2, ID_1, ID_2, a.rule4assist&lt;BR /&gt;from rule4assist a, rule4tmp b&lt;BR /&gt;where a.rule4assist eq b.rule4assist and ID_1 eq " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data want;&lt;BR /&gt;set rule1 rule2 rule3 rule4;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Code for Keeping observations that meet Rule 2*/&lt;BR /&gt;data rule2assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule2assist = catx('-', trim(event2), trim(ID_1));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule2assist;&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule2assist out=rule2tmp(keep=rule2assist);&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rule2tmp;&lt;BR /&gt;set rule2tmp;&lt;BR /&gt;if first.rule2assist eq 1 AND last.rule2assist eq 1 then delete;&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule2tmp nodup;&lt;BR /&gt;by rule2assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule2 as&lt;BR /&gt;select event1, event2, ID_1, ID_2, a.rule2assist&lt;BR /&gt;from rule2assist a, rule2tmp b&lt;BR /&gt;where a.rule2assist eq b.rule2assist and ID_2 eq " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;/*Code for Keeping observations that meet ...this doesn't work*/&lt;/P&gt;&lt;P&gt;data rule3assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule3assist = catx('-', trim(event1), trim(event2),trim(ID_1), trim(ID_2));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule3assist;&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule3assist out=rule3tmp(keep=rule3assist);&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rule3tmp;&lt;BR /&gt;set rule3tmp;&lt;BR /&gt;if first.rule3assist eq 1 AND last.rule3assist eq 1 ;&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule3tmp nodup;&lt;BR /&gt;by rule3assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule3 as&lt;BR /&gt;select distinct*&lt;BR /&gt;from rule3assist a, rule3tmp b&lt;BR /&gt;group by a.event2&lt;BR /&gt;where a.rule3assist eq b.rule3assist and ID_2 eq " " and ID_1 eq " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;/*Code for Keeping observations that meet Rule 4*/&lt;/P&gt;&lt;P&gt;data rule4assist;&lt;BR /&gt;set have;&lt;BR /&gt;rule4assist = catx('-', trim(event1), trim(ID_2));&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule4assist;&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule4assist out=rule4tmp(keep=rule4assist);&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;data rule4tmp;&lt;BR /&gt;set rule4tmp;&lt;BR /&gt;if first.rule4assist eq 1 AND last.rule4assist eq 1 then delete;&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sort data=rule4tmp nodup;&lt;BR /&gt;by rule4assist;&lt;BR /&gt;run;&lt;/P&gt;&lt;P&gt;proc sql;&lt;BR /&gt;create table rule4 as&lt;BR /&gt;select event1, event2, ID_1, ID_2, a.rule4assist&lt;BR /&gt;from rule4assist a, rule4tmp b&lt;BR /&gt;where a.rule4assist eq b.rule4assist and ID_1 eq " "&lt;BR /&gt;;&lt;BR /&gt;quit;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;BR /&gt;data want;&lt;BR /&gt;set rule1 rule2 rule3 rule4&lt;BR /&gt;run;&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;</description>
      <pubDate>Thu, 17 Aug 2023 14:51:23 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Data-Cleaning-remove-events-based-off-linkage-rules-between-2/m-p/889680#M351525</guid>
      <dc:creator>r-lee-484</dc:creator>
      <dc:date>2023-08-17T14:51:23Z</dc:date>
    </item>
  </channel>
</rss>

