我为不同的人安排了两个不同的日期。 第一列 (A) 是人名。 第二列是(B=指数事件日期),第三列是(C=干预日期)。 第四列是两个日期“BC/ in days(1)”之间的差异 (D) 。
我的问题是如何让JMP为每个人(A)选择D中的特定值。 我需要在以下时间范围内选择值:
1- 索引事件日期 (B) 之前 D 中最接近的值。 假设一个人具有以下日期差异值。0、-1、-10。 在这种情况下我想要零
2- A 之后 2 周内(0 天到 14 天)D 中的第一个值,假设一个人有 2、8、14。 我想要 2
3- 自 A 两周后(15 天或更长时间)D 中的第一个值 假设一个人有 17、25、35。 我想要17个
你好,
正如杰德提到的,更多背景更好,但我想我明白你想要什么。
在情况 (1) 中,为最大值,但仅限于那些小于或等于零的差值。
在情况 (2) 中,为最小值,但仅限于 0 到 14(含)之间的差值。
在情况 (3) 中,最小值,但仅限于这些差异 15 或更大。
如果这是您想要的,那么在每种情况下您都可以使用相同的想法:
1)动态设置你不想丢失的数据,然后
2)计算数据的最大值或最小值,同时忽略缺失的数据。
在下面的代码中,每个公式具有相同的结构:
Col <> (如果(我想忽略数据,使其丢失,否则使用原始数据),<<分组变量>> )。
那么我们要忽略哪些数据呢?
在情况 ( 1 ) 中,它是 :diff > 0...任何大于 0 的差异
对于情况(2),是的! ( 0 <= :diff <= 14)...不介于 0 和 14 之间的任何差异(包括 0 和 14)
在情况 (3) 中,它是 :diff < 15...任何小于 15 的差异
运行代码,您将看到如下所示的表格。 在我的代码中,分组列是“人”列...我刚刚模拟了差异,正如您的描述所示,这是感兴趣的列。
干杯,
布雷迪
Names Default To Here( 1 );
nr = 50;
dt = New Table( "ex",
New Column( "Person", character, <<SET values=""> 0, ., :diff ), :Person ) ) );
dt << New Column( "form_2", formula( Col Min( If( !(0 <= :diff <= 14), ., :diff ), :Person ) ) );
dt << New Column( "form_3", formula( Col Min( If( :diff < 15, ., :diff ), :Person ) ) );</SET>

您是否可以分享一个示例数据表来帮助使这一点更加清晰? 如果无法共享 PII 或专有信息,则功能 Tables...Anonymize 可以使共享变得更容易。