<?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 JSL Calculate Elapsed Time Within Column By a Variable in Discussions</title>
    <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/638867#M83658</link>
    <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am wondering if it's possible to create a JSL column formula to calculate the number of days between the observation of an ID WITHIN the same DATE column (e.g. "By ID, Calculate elapsed days By DATE").&amp;nbsp; The output would evaluate the appearance(s) of the same ID and calculate the elapsed time between each appearance of the same ID.&amp;nbsp; This is not a column A to column B comparison, this is a Within column A evaluation (within same column).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note, the First observation of any ID will be blank because there is no comparison (first observation).&amp;nbsp; After First observation, the calculations would function 1st vs. 2nd ... 2nd vs 3rd ... and so on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is a draft concept.&amp;nbsp; Thank you for any help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;ELAPSED_DAYS&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC123&lt;/TD&gt;&lt;TD&gt;1/1/2021&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC123&lt;/TD&gt;&lt;TD&gt;10/31/2021&lt;/TD&gt;&lt;TD&gt;303&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC123&lt;/TD&gt;&lt;TD&gt;6/30/2023&lt;/TD&gt;&lt;TD&gt;607&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EFG567&lt;/TD&gt;&lt;TD&gt;6/30/2021&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EFG567&lt;/TD&gt;&lt;TD&gt;10/31/2021&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ901&lt;/TD&gt;&lt;TD&gt;5/31/2021&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
    <pubDate>Fri, 09 Jun 2023 16:11:20 GMT</pubDate>
    <dc:creator>user_id</dc:creator>
    <dc:date>2023-06-09T16:11:20Z</dc:date>
    <item>
      <title>JSL Calculate Elapsed Time Within Column By a Variable</title>
      <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/638867#M83658</link>
      <description>&lt;P&gt;Hello,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;I am wondering if it's possible to create a JSL column formula to calculate the number of days between the observation of an ID WITHIN the same DATE column (e.g. "By ID, Calculate elapsed days By DATE").&amp;nbsp; The output would evaluate the appearance(s) of the same ID and calculate the elapsed time between each appearance of the same ID.&amp;nbsp; This is not a column A to column B comparison, this is a Within column A evaluation (within same column).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Note, the First observation of any ID will be blank because there is no comparison (first observation).&amp;nbsp; After First observation, the calculations would function 1st vs. 2nd ... 2nd vs 3rd ... and so on.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Below is a draft concept.&amp;nbsp; Thank you for any help.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;TABLE&gt;&lt;TBODY&gt;&lt;TR&gt;&lt;TD&gt;ID&lt;/TD&gt;&lt;TD&gt;DATE&lt;/TD&gt;&lt;TD&gt;ELAPSED_DAYS&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC123&lt;/TD&gt;&lt;TD&gt;1/1/2021&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC123&lt;/TD&gt;&lt;TD&gt;10/31/2021&lt;/TD&gt;&lt;TD&gt;303&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;ABC123&lt;/TD&gt;&lt;TD&gt;6/30/2023&lt;/TD&gt;&lt;TD&gt;607&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EFG567&lt;/TD&gt;&lt;TD&gt;6/30/2021&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;EFG567&lt;/TD&gt;&lt;TD&gt;10/31/2021&lt;/TD&gt;&lt;TD&gt;123&lt;/TD&gt;&lt;/TR&gt;&lt;TR&gt;&lt;TD&gt;XYZ901&lt;/TD&gt;&lt;TD&gt;5/31/2021&lt;/TD&gt;&lt;TD&gt;&amp;nbsp;&lt;/TD&gt;&lt;/TR&gt;&lt;/TBODY&gt;&lt;/TABLE&gt;</description>
      <pubDate>Fri, 09 Jun 2023 16:11:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/638867#M83658</guid>
      <dc:creator>user_id</dc:creator>
      <dc:date>2023-06-09T16:11:20Z</dc:date>
    </item>
    <item>
      <title>Re: JSL Calculate Elapsed Time Within Column By a Variable</title>
      <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/638875#M83662</link>
      <description>&lt;P&gt;Use Col Min() and Date Difference. If you really need the first observation to be missing value, you can add if statement to check for it &lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;Names Default To Here(1);

dt = New Table("Untitled",
	Add Rows(6),
	Compress File When Saved(1),
	New Column("ID",
		Character,
		"Nominal",
		Set Values({"ABC123", "ABC123", "ABC123", "EFG567", "EFG567", "XYZ901"})
	),
	New Column("DATE",
		Numeric,
		"Continuous",
		Format("m/d/y", 12),
		Input Format("m/d/y"),
		Set Values([3692304000, 3718483200, 3770928000, 3707856000, 3718483200, 3705264000])
	),
	New Column("ELAPSED_DAYS",
		Numeric,
		"Continuous",
		Format("Best", 12),
		Set Values([., 303, 607, ., 123, .])
	)
);

dt &amp;lt;&amp;lt; New Column("elapseddays", continuous, numeric, Formula(
	Date Difference(Col Min(:Date, :ID), :Date, "day"))
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1685979297242.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/53423i580E20F96CB597CE/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jthi_0-1685979297242.png" alt="jthi_0-1685979297242.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Mon, 05 Jun 2023 15:35:20 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/638875#M83662</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2023-06-05T15:35:20Z</dc:date>
    </item>
    <item>
      <title>Re: JSL Calculate Elapsed Time Within Column By a Variable</title>
      <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639579#M83715</link>
      <description>&lt;P&gt;Jarmo,&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Thanks, if I interpret correctly the Col Min function in your formula would establish the first observation (earliest date) of the ID.&lt;/P&gt;&lt;P&gt;That can be helpful for a total time between first observation and "nth" observation.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;However, I would also like to calculate most recent observation vs. previous observation (elapsed time between each observation).&amp;nbsp; Such as "nth" observation vs "nth - 1" observation.&amp;nbsp; In example below, "row 2 vs row 3" is an elapsed time of 607 days (second observation of ID vs. third observation of ID).&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;Any thoughts?&amp;nbsp; Your feedback is appreciated.&amp;nbsp; Thank you.&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="user_id_0-1686072980980.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/53467iAECCBEA2762FA0CB/image-size/medium?v=v2&amp;amp;px=400" role="button" title="user_id_0-1686072980980.png" alt="user_id_0-1686072980980.png" /&gt;&lt;/span&gt;&lt;/P&gt;&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Tue, 06 Jun 2023 17:38:27 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639579#M83715</guid>
      <dc:creator>user_id</dc:creator>
      <dc:date>2023-06-06T17:38:27Z</dc:date>
    </item>
    <item>
      <title>Re: JSL Calculate Elapsed Time Within Column By a Variable</title>
      <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639732#M83727</link>
      <description>&lt;P&gt;Probably easiest if split your date column by ID, then do all your date math in each of the new columns and then stacking it all again.&lt;/P&gt;</description>
      <pubDate>Wed, 07 Jun 2023 07:47:56 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639732#M83727</guid>
      <dc:creator>pauldeen</dc:creator>
      <dc:date>2023-06-07T07:47:56Z</dc:date>
    </item>
    <item>
      <title>Re: JSL Calculate Elapsed Time Within Column By a Variable</title>
      <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639736#M83729</link>
      <description>&lt;P&gt;If you must do it in a column formula then you need a local variable. Use this column jsl:&lt;/P&gt;&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;New Column( "Elapsed_days",
	Numeric,
	"Nominal",
	Format( "Best", 9 ),
	Formula(
		Local( {ResetRow = 1},
			If(
				Row() == 1, .,
				:ID != Lag( :ID ), ResetRow == Row(),
				(:Date - Lag( :Date )) / In Days( 1 )
			)
		)
	)
)&lt;/CODE&gt;&lt;/PRE&gt;</description>
      <pubDate>Wed, 07 Jun 2023 07:53:55 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639736#M83729</guid>
      <dc:creator>pauldeen</dc:creator>
      <dc:date>2023-06-07T07:53:55Z</dc:date>
    </item>
    <item>
      <title>Re: JSL Calculate Elapsed Time Within Column By a Variable</title>
      <link>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639783#M83734</link>
      <description>&lt;P&gt;This formula might look a bit complicated, but it is using Col Moving Average to get previous value for ID&lt;/P&gt;
&lt;PRE&gt;&lt;CODE class=" language-jsl"&gt;dt &amp;lt;&amp;lt; New Column("elapseddays_new", continuous, numeric, Formula(
	Date Difference(Col Moving Average(:Date, 1, 1, 0, :ID) * 2 - :Date, :Date, "day"))
);&lt;/CODE&gt;&lt;/PRE&gt;
&lt;P&gt;&lt;span class="lia-inline-image-display-wrapper lia-image-align-inline" image-alt="jthi_0-1686133822284.png" style="width: 400px;"&gt;&lt;img src="https://community.jmp.com/t5/image/serverpage/image-id/53476i8E5526232F52BB3C/image-size/medium?v=v2&amp;amp;px=400" role="button" title="jthi_0-1686133822284.png" alt="jthi_0-1686133822284.png" /&gt;&lt;/span&gt;&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;
&lt;P&gt;Other good option would be to use Lag() and if statement to check if ID has changed&lt;/P&gt;
&lt;P&gt;&amp;nbsp;&lt;/P&gt;</description>
      <pubDate>Wed, 07 Jun 2023 10:30:33 GMT</pubDate>
      <guid>https://community.jmp.com/t5/Discussions/JSL-Calculate-Elapsed-Time-Within-Column-By-a-Variable/m-p/639783#M83734</guid>
      <dc:creator>jthi</dc:creator>
      <dc:date>2023-06-07T10:30:33Z</dc:date>
    </item>
  </channel>
</rss>

