cancel
Showing results for 
Show  only  | Search instead for 
Did you mean: 
  • JMP will suspend normal business operations for our Winter Holiday beginning on Wednesday, Dec. 24, 2025, at 5:00 p.m. ET (2:00 p.m. ET for JMP Accounts Receivable).
    Regular business hours will resume at 9:00 a.m. EST on Friday, Jan. 2, 2026.
  • We’re retiring the File Exchange at the end of this year. The JMP Marketplace is now your destination for add-ins and extensions.

Discussions

Solve problems, and share tips and tricks with other JMP users.
%3CLINGO-SUB%20id%3D%22lingo-sub-711204%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EC%A1%B0%EA%B1%B4%EB%B6%80%20%EC%88%98%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711204%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%EB%8B%A4%EB%A5%B8%20%EC%97%B4%EC%97%90%20%EC%A1%B0%EA%B1%B4%EB%B6%80%EB%A1%9C%20%EC%A0%81%EC%9A%A9%EB%90%98%EB%8A%94%20%EC%97%B4%20%EC%88%98%EC%8B%9D%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%98%EB%A0%A4%EA%B3%A0%20%ED%95%A9%EB%8B%88%EB%8B%A4.%20%22%EA%B2%B0%EA%B3%BC%22%20%EC%97%B4%EC%9D%B4%20%22%EC%8B%9C%EA%B0%84%22%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%97%AC%EB%9F%AC%20%EA%B0%92%EC%9D%B4%20%EC%9E%88%EB%8A%94%20%22%EC%A3%BC%EC%A0%9C%22%20%EB%B0%8F%20%22%EC%A0%9C%ED%92%88%22%EC%9C%BC%EB%A1%9C%20%EB%88%84%EC%A0%81%EB%90%9C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EC%A0%80%EB%8A%94%20%EB%8B%A4%EC%9D%8C%EA%B3%BC%20%EA%B0%99%EC%9D%B4%20%22%EA%B2%B0%EA%B3%BC%22%EC%9D%98%20%EA%B0%81%20%EA%B0%92%EC%97%90%20%EB%8C%80%ED%95%9C%20%EA%B8%B0%EC%A4%80%EC%9D%84%20%EA%B3%84%EC%82%B0%ED%95%98%EB%A0%A4%EA%B3%A0%20%ED%95%A9%EB%8B%88%EB%8B%A4.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%EC%83%88%20%EC%97%B4%20%3D%20%22%EA%B2%B0%EA%B3%BC%22%20%E2%80%93%20%5B%ED%8A%B9%EC%A0%95%20%EC%A3%BC%EC%A0%9C%2F%EC%A0%9C%ED%92%88%20%EC%A1%B0%ED%95%A9%EC%97%90%20%EB%8C%80%ED%95%B4%20%EC%8B%9C%EA%B0%84%3D(1)%EC%9D%B8%20%EA%B2%BD%EC%9A%B0%20%22%EA%B2%B0%EA%B3%BC%22%20%EA%B0%92%5D%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%EA%B0%90%EC%82%AC%ED%95%A9%EB%8B%88%EB%8B%A4%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-LABS%20id%3D%22lingo-labs-711204%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CLINGO-LABEL%3E%EC%9E%90%EB%8F%99%ED%99%94%20%EB%B0%8F%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8C%85%3C%2FLINGO-LABEL%3E%3C%2FLINGO-LABS%3E%3CLINGO-SUB%20id%3D%22lingo-sub-711220%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EB%8B%B5%3A%20%EC%A1%B0%EA%B1%B4%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711220%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%EB%8D%B0%EC%9D%B4%ED%84%B0%EC%9D%98%20%EC%98%88%EB%A5%BC%20%EB%93%A4%EC%96%B4%EC%A3%BC%EC%8B%A4%20%EC%88%98%20%EC%9E%88%EB%82%98%EC%9A%94%3F%EA%B7%B8%EB%9F%AC%EB%A9%B4%20%EC%A0%81%EC%A0%88%ED%95%9C%20%ED%95%B4%EA%B2%B0%EC%B1%85%EC%9D%84%20%EC%B0%BE%EB%8A%94%20%EB%8D%B0%20%EB%8F%84%EC%9B%80%EC%9D%B4%20%EB%90%A0%20%EA%B2%83%EC%9E%85%EB%8B%88%EB%8B%A4.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-711237%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EB%8B%B5%3A%20%EC%A1%B0%EA%B1%B4%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711237%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80%20%EC%A0%9C%EB%AA%A9%2C%20%EC%A0%9C%ED%92%88%2C%20%EC%8B%9C%EA%B0%84%EB%B3%84%EB%A1%9C%20%EC%A0%95%EB%A0%AC%EB%90%98%EC%96%B4%20%EC%9E%88%EC%9C%BC%EB%A9%B4%20%EC%9D%B4%20%EC%98%88%EA%B0%80%20%EC%9E%91%EB%8F%99%ED%95%A9%EB%8B%88%EB%8B%A4.%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3ENames%20Default%20To%20Here(%201%20)%3B%0Adt%20%3D%20Open(%20%22%24SAMPLE_DATA%2Fbig%20class.jmp%22%20)%3B%0Adt%3Aage%20%26lt%3B%26lt%3B%20set%20name(%20%22Subject%22%20)%3B%0Adt%3Asex%20%26lt%3B%26lt%3B%20set%20name(%20%22Product%22%20)%3B%0Adt%3Aweight%20%26lt%3B%26lt%3B%20set%20name(%20%22Results%22%20)%3B%0A%0Adt%20%26lt%3B%26lt%3B%20New%20Column(%20%22baseline%22%2C%0A%20formula(%0A%20%20If(%20Row()%20%3D%3D%201%2C%0A%20%20%20valueTime1%20%3D%20%3AResults%2C%0A%20%20%20If(%20%3ASubject%20!%3D%20Lag(%20%3Asubject%20)%20%7C%20%3AProduct%20!%3D%20Lag(%20%3Aproduct%20)%2C%0A%20%20%20%20valueTime1%20%3D%20%3AResults%0A%20%20%20)%0A%20%20)%3B%0A%20%20baseline%20%3D%20%3AResults%20-%20valueTime1%3B%0A%20)%0A)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-711335%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EB%8B%B5%3A%20%EC%A1%B0%EA%B1%B4%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711335%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%EC%83%98%ED%94%8C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%ED%8F%AC%ED%95%A8%EC%8B%9C%EC%BC%B0%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EC%88%98%EC%8B%9D%EC%9D%B4%20%EA%B0%81%20%EC%A3%BC%EC%A0%9C%2F%EC%A0%9C%ED%92%88%20%EC%A1%B0%ED%95%A9%EC%97%90%20%EB%8C%80%ED%95%9C%20%EC%8B%9C%EA%B0%84(-5)%20%EA%B2%B0%EA%B3%BC%20%EA%B0%92%EC%9D%84%20%EC%B7%A8%ED%95%98%EA%B3%A0%20%EC%A3%BC%EC%A0%9C%2F%EC%A0%9C%ED%92%88%20%EC%A1%B0%ED%95%A9%EC%9D%98%20%EA%B0%81%20%EA%B2%B0%EA%B3%BC%EC%97%90%EC%84%9C%20%ED%95%B4%EB%8B%B9%20%EA%B0%92%EC%9D%84%20%EB%B9%BC%EB%8A%94%20%EC%83%88%20%EC%97%B4%EC%9D%84%20%EC%B6%94%EA%B0%80%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4.%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-711362%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EB%8B%B5%3A%20%EC%A1%B0%EA%B1%B4%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711362%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%EB%95%8C%EB%A1%9C%EB%8A%94%20%EC%97%B4%20%EC%88%98%EC%8B%9D%EC%97%90%20%EB%8C%80%ED%95%B4%20%EB%B3%B5%EC%9E%A1%ED%95%9C%20jsl%EC%9D%84%20%EC%9E%91%EC%84%B1%ED%95%98%EB%8A%94%20%EA%B2%83%EB%B3%B4%EB%8B%A4%20%EC%97%AC%EB%9F%AC%20%EB%8B%A8%EA%B3%84%EB%A5%BC%20%EA%B1%B0%EC%B3%90%20%EC%9D%B4%EC%99%80%20%EA%B0%99%EC%9D%80%20%EB%AC%B8%EC%A0%9C%EB%A5%BC%20%ED%95%B4%EA%B2%B0%ED%95%98%EB%8A%94%20%EA%B2%83%EC%9D%B4%20%EB%8D%94%20%EC%89%BD%EC%8A%B5%EB%8B%88%EB%8B%A4.%20%EB%8B%A4%EC%9D%8C%EC%9D%80%20%22%ED%95%98%EC%9C%84%20%EC%A7%91%ED%95%A9%22%EC%9D%84%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20Time%3D-5%20%ED%96%89%EC%9D%84%20%EC%B6%94%EC%B6%9C%ED%95%98%EA%B3%A0%20%22%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%22%EB%A5%BC%20%EC%82%AC%EC%9A%A9%ED%95%98%EC%97%AC%20%EC%9B%90%EB%9E%98%20%EB%8D%B0%EC%9D%B4%ED%84%B0%20%ED%85%8C%EC%9D%B4%EB%B8%94%EC%97%90%20%EB%8B%A4%EC%8B%9C%20%EA%B2%B0%ED%95%A9%ED%95%9C%20%EB%8B%A4%EC%9D%8C%20%EC%97%B4%20%EC%88%98%EC%8B%9D%EC%97%90%EC%84%9C%20%EA%B0%84%EB%8B%A8%ED%95%9C%20%EB%B9%BC%EA%B8%B0%EB%A5%BC%20%EC%88%98%ED%96%89%ED%95%98%EB%8A%94%20%EC%A0%91%EA%B7%BC%20%EB%B0%A9%EC%8B%9D%EC%9E%85%EB%8B%88%EB%8B%A4.%20JMP%2017%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%98%EA%B3%A0%20%EC%9E%88%EB%8B%A4%EB%A9%B4%20%EC%9E%91%EC%97%85%20%ED%9D%90%EB%A6%84%EC%9D%80%20%EC%9D%B4%EB%9F%B0%20%EC%A2%85%EB%A5%98%EC%9D%98%20%EC%9E%91%EC%97%85%EC%9D%84%20%EA%B5%AC%EC%B6%95%ED%95%98%EA%B3%A0%20%EA%B3%B5%EC%9C%A0%ED%95%A0%20%EC%88%98%20%EC%9E%88%EB%8A%94%20%EC%A2%8B%EC%9D%80%20%EB%B0%A9%EB%B2%95%EC%9E%85%EB%8B%88%EB%8B%A4.%3C%2FP%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-711367%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EB%8B%B5%3A%20%EC%A1%B0%EA%B1%B4%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711367%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%EB%82%B4%EA%B0%80%20%EC%83%9D%EA%B0%81%ED%95%B4%EB%82%B8%20JSL%EC%9D%80%20%EA%B7%B8%EB%A6%AC%20%EB%B3%B5%EC%9E%A1%ED%95%98%EC%A7%80%20%EC%95%8A%EC%8A%B5%EB%8B%88%EB%8B%A4.%EB%82%98%EB%8A%94%20%EC%88%98%EC%8B%9D%EC%9D%84%20%EC%9E%91%EC%84%B1%ED%95%98%EC%A7%80%20%EC%95%8A%EA%B3%A0%20%ED%85%8C%EC%9D%B4%EB%B8%94%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%9E%91%EC%84%B1%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%EB%8D%94%20%EB%A7%8E%EC%9D%80%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EC%B6%94%EA%B0%80%ED%95%A0%20%EB%95%8C%EB%A7%88%EB%8B%A4%20%EC%9D%B4%20%EC%9E%91%EC%97%85%EC%9D%84%20%EC%8B%A4%ED%96%89%ED%95%A0%20%EC%88%98%20%EC%9E%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3Edt%20%3D%20Current%20Data%20Table()%3B%0AOffsetArray%20%3D%20Associative%20Array()%3B%0ATimeRows%20%3D%20dt%20%26lt%3B%26lt%3B%20Get%20Rows%20Where(%20%3ATime%20%3D%3D%20-5%20)%3B%0AFor%20Each(%20%7Bval%2C%20idx%7D%2C%20TimeRows%2C%20OffsetArray%5B%3ASubject%5Bval%5D%20%7C%7C%20%3AProduct%5Bval%5D%5D%20%3D%20%3AResults%5Bval%5D%20)%3B%0AFor%20Each%20Row(%20dt%2C%20%3ANew%20Column%20%3D%20%3AResults%20-%20OffsetArray%5B%3ASubject%20%7C%7C%20%3AProduct%5D%20)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%ED%8E%B8%EC%A7%91%ED%95%98%EB%8B%A4%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CP%3E%ED%85%8C%EC%9D%B4%EB%B8%94%EC%9D%84%20%EB%8D%94%20%EC%9E%90%EC%84%B8%ED%9E%88%20%EC%82%B4%ED%8E%B4%EB%B3%B8%20%ED%9B%84%20%EC%9D%BC%EB%B6%80%20%3AResults%20%EC%85%80%EC%97%90%EC%84%9C%20%EB%88%84%EB%9D%BD%EB%90%9C%20%EA%B0%92%EC%9D%84%20%EB%B0%9C%EA%B2%AC%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%EC%9D%B4%EB%A5%BC%200%EC%9C%BC%EB%A1%9C%20%EB%8B%A4%EC%8B%9C%20%EC%BD%94%EB%94%A9%ED%95%98%EA%B1%B0%EB%82%98%20%EC%8A%A4%ED%81%AC%EB%A6%BD%ED%8A%B8%EB%A5%BC%20%EC%95%BD%EA%B0%84%20%EB%B3%80%EA%B2%BD%ED%95%B4%EC%95%BC%20%ED%95%A9%EB%8B%88%EB%8B%A4.%3C%2FP%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3Edt%20%3D%20Current%20Data%20Table()%3B%0AOffsetArray%20%3D%20Associative%20Array()%3B%0ATimeRows%20%3D%20dt%20%26lt%3B%26lt%3B%20Get%20Rows%20Where(%20%3ATime%20%3D%3D%20-5%20)%3B%0AFor%20Each(%20%7Bval%2C%20idx%7D%2C%20TimeRows%2C%20OffsetArray%5B%3ASubject%5Bval%5D%20%7C%7C%20%3AProduct%5Bval%5D%5D%20%3D%20If(%20!Is%20Missing(%20%3AResults%5Bval%5D%20)%2C%20%3AResults%5Bval%5D%2C%200%20)%20)%3B%0AFor%20Each%20Row(%20dt%2C%20%3AResults%20with%20Offset%20%3D%20%3AResults%20-%20OffsetArray%5B%3ASubject%20%7C%7C%20%3AProduct%5D%20)%3B%3C%2FCODE%3E%3C%2FPRE%3E%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E%3CLINGO-SUB%20id%3D%22lingo-sub-711236%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%EB%8B%B5%3A%20%EC%A1%B0%EA%B1%B4%EC%8B%9D%3C%2FLINGO-SUB%3E%3CLINGO-BODY%20id%3D%22lingo-body-711236%22%20slang%3D%22en-US%22%20mode%3D%22NONE%22%3E%3CP%3E%ED%85%8C%EC%8A%A4%ED%8A%B8%ED%95%A0%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EA%B0%80%20%EC%97%86%EA%B8%B0%20%EB%95%8C%EB%AC%B8%EC%97%90%20%EC%B6%94%EC%B8%A1%EC%9D%BC%20%EB%BF%90%EC%9E%85%EB%8B%88%EB%8B%A4.%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3E%3AResult%20-%20Col%20Min(If(%3ATime%20%3D%3D%201%2C%20%3AResult%2C%20.)%2C%20%3AGroup)%3B%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%0A%3CP%3E%ED%8E%B8%EC%A7%91%ED%95%98%EB%8B%A4%3A%3C%2FP%3E%0A%3CP%3E%EC%83%98%ED%94%8C%20%EB%8D%B0%EC%9D%B4%ED%84%B0%EB%A5%BC%20%EB%B0%9B%EC%9D%80%20%ED%9B%84%20%EC%88%98%EC%8B%9D%EC%9D%84%20%EC%97%85%EB%8D%B0%EC%9D%B4%ED%8A%B8%ED%96%88%EC%8A%B5%EB%8B%88%EB%8B%A4.%3C%2FP%3E%0A%3CPRE%3E%3CCODE%20class%3D%22%20language-jsl%22%3E%3AResults%20-%20Col%20Min(If(%3ATime%20%3D%3D%20-5%2C%20%3AResults%2C%20.)%2C%20%3ASubject%2C%20%3AProduct)%3C%2FCODE%3E%3C%2FPRE%3E%0A%3CP%3E%26nbsp%3B%3C%2FP%3E%3C%2FLINGO-BODY%3E
Choose Language Hide Translation Bar
JMPUser9
Level II

Conditional Formula

I am trying to add a column formula that is conditional to other columns. I have data where “Results” Column is stacked by “Subject” and “Product” with multiple values over “Time”. I’m trying to calculate the baseline for each value in “Results” so that:

 

New Column = "Results" – ["Results" value where Time=(1) for that particular Subject/Product combination]

 

Thank you

1 ACCEPTED SOLUTION

Accepted Solutions

Re: Conditional Formula

Sometimes it's  easier to attack problems like this in several steps, rather than writing complex jsl for a column formula. Here's an approach that uses "Subset" to extract the Time=-5 rows, joins them back onto the original data table with "Update", and then performs a simple subtraction in a column formula. If you're running JMP 17, workflows are a great way to build and share this kind of thing.

 

View solution in original post

6 REPLIES 6
mmarchandTSI
Level V

Re: Conditional Formula

Can you give an example of the data?  That will help with finding a proper solution.

jthi
Super User

Re: Conditional Formula

Just a guess as there is no data to test this with

:Result - Col Min(If(:Time == 1, :Result, .), :Group);

 

Edit:

Updated formula after we received sample data

:Results - Col Min(If(:Time == -5, :Results, .), :Subject, :Product)

 

-Jarmo
txnelson
Super User

Re: Conditional Formula

If your data are sorted by Subject, Product, Time then this example will work

Names Default To Here( 1 );
dt = Open( "$SAMPLE_DATA/big class.jmp" );
dt:age << set name( "Subject" );
dt:sex << set name( "Product" );
dt:weight << set name( "Results" );

dt << New Column( "baseline",
	formula(
		If( Row() == 1,
			valueTime1 = :Results,
			If( :Subject != Lag( :subject ) | :Product != Lag( :product ),
				valueTime1 = :Results
			)
		);
		baseline = :Results - valueTime1;
	)
);
Jim
JMPUser9
Level II

Re: Conditional Formula

I've included sample data. I need to add a new column where the formula takes the Time(-5) Results value for each Subject/Product combination and subtracts that value from each Result in the Subject/Product Combination. 

Re: Conditional Formula

Sometimes it's  easier to attack problems like this in several steps, rather than writing complex jsl for a column formula. Here's an approach that uses "Subset" to extract the Time=-5 rows, joins them back onto the original data table with "Update", and then performs a simple subtraction in a column formula. If you're running JMP 17, workflows are a great way to build and share this kind of thing.

 

mmarchandTSI
Level V

Re: Conditional Formula

The JSL I came up with isn't too complicated.  I didn't write a formula but a table script.  You could run this whenever you add more data.

 

dt = Current Data Table();
OffsetArray = Associative Array();
TimeRows = dt << Get Rows Where( :Time == -5 );
For Each( {val, idx}, TimeRows, OffsetArray[:Subject[val] || :Product[val]] = :Results[val] );
For Each Row( dt, :New Column = :Results - OffsetArray[:Subject || :Product] );

edit

 

After looking at the table more, I noticed the missing values in some :Results cells.  You should recode those to 0 or alter the script a bit:

 

dt = Current Data Table();
OffsetArray = Associative Array();
TimeRows = dt << Get Rows Where( :Time == -5 );
For Each( {val, idx}, TimeRows, OffsetArray[:Subject[val] || :Product[val]] = If( !Is Missing( :Results[val] ), :Results[val], 0 ) );
For Each Row( dt, :Results with Offset = :Results - OffsetArray[:Subject || :Product] );

 

Recommended Articles