<?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: Many to many merge without using PROC SQL for EPOCH in SAS Programming</title>
    <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639314#M190170</link>
    <description>&lt;P&gt;ZE between 20000 and 60000 and SE between 100 and 500.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm working on a SAS EG server and having 3-4 SQL procedures in one program can make the program run for 15-30 minutes.&lt;/P&gt;</description>
    <pubDate>Sun, 12 Apr 2020 12:36:06 GMT</pubDate>
    <dc:creator>mozty</dc:creator>
    <dc:date>2020-04-12T12:36:06Z</dc:date>
    <item>
      <title>Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639235#M190107</link>
      <description>&lt;P&gt;Dear community,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am trying to merge EPOCH when SESTDTC&amp;lt;=ZEDTC&amp;lt;SEENDTC or ZEDTC&amp;gt;=SESTDTC (if SEENDTC is missing) and keep the latest value where this is true. Proc SQL is time consuming when dealing with huge datasets, so I am looking for alternatives.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;USUBJID&lt;/TD&gt;&lt;TD&gt;TAETORD&lt;/TD&gt;&lt;TD&gt;EPOCH&lt;/TD&gt;&lt;TD&gt;SESTDTC&lt;/TD&gt;&lt;TD&gt;SEENDTC&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;SCREENING&lt;/TD&gt;&lt;TD&gt;2019-02-20&lt;/TD&gt;&lt;TD&gt;2019-03-04T08:25&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;TREATMENT&lt;/TD&gt;&lt;TD&gt;2019-03-04T08:25&lt;/TD&gt;&lt;TD&gt;2019-03-09&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;FOLLOW-UP&lt;/TD&gt;&lt;TD&gt;2019-03-09&lt;/TD&gt;&lt;TD&gt;2019-04-01&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;SCREENING&lt;/TD&gt;&lt;TD&gt;2019-07-07&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;TABLE border="1"&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;USUBJID&lt;/TD&gt;&lt;TD&gt;VISITNUM&lt;/TD&gt;&lt;TD&gt;ZESPID&lt;/TD&gt;&lt;TD&gt;ZEDTC&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;EPOCH&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2019-02-24&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;SCREENING&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2019-03-04T08:25&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;TREATMENT&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2019-03-04&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;TREATMENT&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2019-03&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;FOLLOW-UP&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1234&lt;/TD&gt;&lt;TD&gt;3&lt;/TD&gt;&lt;TD&gt;2&lt;/TD&gt;&lt;TD&gt;2019-03-09T12:35&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;FOLLOW-UP&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;1000&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;1&lt;/TD&gt;&lt;TD&gt;2019-07-20&lt;/TD&gt;&lt;TD&gt;&lt;FONT color="#33CCCC"&gt;SCREENING&lt;/FONT&gt;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Things to consider:&lt;/P&gt;&lt;P&gt;- the EPOCH variable in blue is the result after merging both tables&lt;/P&gt;&lt;P&gt;- all date variables are in ISO8601 format with or without time and ZEDTC can even have partial date values&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Please let me know if you need additional information. Thanks.&lt;/P&gt;</description>
      <pubDate>Sun, 12 Apr 2020 00:27:16 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639235#M190107</guid>
      <dc:creator>mozty</dc:creator>
      <dc:date>2020-04-12T00:27:16Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639260#M190129</link>
      <description>&lt;P&gt;Please show us examples for the datasets before joining. Use data steps with datalines, so we can quickly recreate the datasets for testing. Use the "little running man" to post the data step codes.&lt;/P&gt;</description>
      <pubDate>Sun, 12 Apr 2020 05:53:51 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639260#M190129</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-04-12T05:53:51Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639273#M190136</link>
      <description>&lt;P&gt;Please see below:&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data se;
length USUBJID $4 TAETORD 8 EPOCH $9 SESTDTC SEENDTC $16;
infile datalines dsd;
input USUBJID TAETORD EPOCH SESTDTC SEENDTC;
datalines;
1234,1,SCREENING,2019-02-20,2019-03-04T08:25
1234,2,TREATMENT,2019-03-04T08:25,2019-03-09
1234,3,FOLLOW-UP,2019-03-09,2019-04-01
1000,1,SCREENING,2019-07-07,
;
run;

data ze;
length USUBJID $4 VISITNUM 8 ZESPID $1 ZEDTC $16;
infile datalines dsd;
input USUBJID VISITNUM ZESPID ZEDTC;
datalines;
1234,1,1,2019-02-24
1234,2,1,2019-03-04T08:25
1234,2,2,2019-03-04
1234,3,1,2019-03
1234,3,2,2019-03-09T12:35
1000,1,1,2019-07-20
;
run;&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Sun, 12 Apr 2020 08:36:33 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639273#M190136</guid>
      <dc:creator>mozty</dc:creator>
      <dc:date>2020-04-12T08:36:33Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639282#M190140</link>
      <description>Hi motzy,&lt;BR /&gt;Instead of merging EPOCH from SE I would just derive it based on IF/ELSE by including the start/end dates of each EPOCH as additional variables and checking versus ZEDTC in an intermediate step (6 variables in total for 3 EPOCHs).</description>
      <pubDate>Sun, 12 Apr 2020 10:22:28 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639282#M190140</guid>
      <dc:creator>geoskiad</dc:creator>
      <dc:date>2020-04-12T10:22:28Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639288#M190145</link>
      <description>&lt;P&gt;How many observations do you have in both of these datasets in real life?&lt;/P&gt;</description>
      <pubDate>Sun, 12 Apr 2020 10:49:48 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639288#M190145</guid>
      <dc:creator>Kurt_Bremser</dc:creator>
      <dc:date>2020-04-12T10:49:48Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639314#M190170</link>
      <description>&lt;P&gt;ZE between 20000 and 60000 and SE between 100 and 500.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I'm working on a SAS EG server and having 3-4 SQL procedures in one program can make the program run for 15-30 minutes.&lt;/P&gt;</description>
      <pubDate>Sun, 12 Apr 2020 12:36:06 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639314#M190170</guid>
      <dc:creator>mozty</dc:creator>
      <dc:date>2020-04-12T12:36:06Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639335#M190184</link>
      <description>Since you only have 3 EPOCHs you could do the "many to many" merge manually. OUTPUT your ZE dataset 3 times and each time give an artificial value ii from 1 to 3 for each of the 3 duplicate rows. In the existing SE domain, give for Screening ii=1, for Treatment ii=2, and for Follow-Up ii=3. Merge them together by subject and ii. Then check which ZEDTC falls in the interval of interest and keep only those records.&lt;BR /&gt;&lt;BR /&gt;Alternatively you could split SE into 3 separate datasets based on EPOCH. Do the merge with ZE 3 times checking each time ZEDTC vs SEST/ENDTC. In the end you can keep those records that fall in the date interval and there should be 1 record per subject.</description>
      <pubDate>Sun, 12 Apr 2020 15:57:18 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639335#M190184</guid>
      <dc:creator>geoskiad</dc:creator>
      <dc:date>2020-04-12T15:57:18Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639345#M190190</link>
      <description>&lt;P&gt;What is the result you want from that data?&amp;nbsp; In particular which of these two results do you want?&lt;/P&gt;
&lt;PRE&gt;Obs    USUBJID    VISITNUM    ZESPID    ZEDTC                 EPOCH
 5      1234          2         1       2019-03-04T08:25    TREATMENT
 6      1234          2         1       2019-03-04T08:25    SCREENING
&lt;/PRE&gt;</description>
      <pubDate>Sun, 12 Apr 2020 18:11:29 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639345#M190190</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-04-12T18:11:29Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639346#M190191</link>
      <description>&lt;P&gt;Try just setting them by subject and date (start date / event date).&amp;nbsp; &amp;nbsp;Set the epoch dataset first and retain the EPOCH value from it going forward.&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-sas"&gt;data via_ds;
  set se(in=se rename=(sestdtc=zedtc)) ze (in=ze) ;
  by usubjid zedtc ;
  length new_epoch $9;
  retain new_epoch;
  if first.usubjid then new_epoch=' ';
  if se then new_epoch=epoch;
  if ze ;
  keep USUBJID VISITNUM ZESPID ZEDTC new_epoch;
  rename new_epoch=EPOCH;
run;&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;Results:&lt;/P&gt;
&lt;PRE&gt;Obs    USUBJID    zedtc               VISITNUM    ZESPID      EPOCH

 1      1000      2019-07-20              1         1       SCREENING
 2      1234      2019-02-24              1         1       SCREENING
 3      1234      2019-03                 3         1       SCREENING
 4      1234      2019-03-04              2         2       SCREENING
 5      1234      2019-03-04T08:25        2         1       TREATMENT
 6      1234      2019-03-09T12:35        3         2       FOLLOW-UP
&lt;/PRE&gt;</description>
      <pubDate>Sun, 12 Apr 2020 18:14:20 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639346#M190191</guid>
      <dc:creator>Tom</dc:creator>
      <dc:date>2020-04-12T18:14:20Z</dc:date>
    </item>
    <item>
      <title>Re: Many to many merge without using PROC SQL for EPOCH</title>
      <link>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639439#M190250</link>
      <description>&lt;P&gt;This is what I wanted.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thank you all for your suggestions.&lt;/P&gt;</description>
      <pubDate>Mon, 13 Apr 2020 11:51:17 GMT</pubDate>
      <guid>https://communities.sas.com/t5/SAS-Programming/Many-to-many-merge-without-using-PROC-SQL-for-EPOCH/m-p/639439#M190250</guid>
      <dc:creator>mozty</dc:creator>
      <dc:date>2020-04-13T11:51:17Z</dc:date>
    </item>
  </channel>
</rss>

