创建时间变量大家好,
我对 JMP 世界比较陌生,正在尝试处理数据集。
我正在尝试在我的数据中创建一种在试验中测量时间的方法。 为此,我创建了一个 Lag 变量,它告诉我新的试验何时开始。 我现在一直在尝试创建一个变量,该变量将为我提供每次试验中操作的演示次数,以便我可以使用它最终获得每次试验中的时间度量。 我已经将此过程设置为一个 if, then 语句,认为这会起作用,但我还没有达到预期的终点。 当前代码如下。
If( :Lag1 == 1, 1,
:Lag1 == 0, Empty () )
当 Lag1 变量等于 1 时,我希望新变量等于 1。 当 Lag1 等于 0 时,我希望它向上计数,直到它到达下一个 lag1 == 1,其中应该以新的计数序列重新开始。 我已经在 JMP 脚本中尝试了许多不同的功能,并且到目前为止都很幸运。
任何帮助是极大的赞赏!
回复:创建时间变量
好的。 因此,仅在查看选定区域时。 我想要:
Nback#=1,持续时间=14303912,累积持续时间=0
Nback#=2 , 持续时间=14305914, 累积持续时间=2002
Nback#=3 , 持续时间=14307916, 累积持续时间=4004
Nback#=4 , 持续时间=14309965, 累积持续时间=6053
Nback#=5 , 持续时间=14312015, 累计持续时间=8103
Nback#=6 , 持续时间=14314051, 累积持续时间=10139
希望这有助于使一切更清楚。 这是我在这个新列创建中最理想的内容。
回复:创建时间变量第一个案例有一个持续时间。那么当 Nback# 为 2 时,这应该是什么样子呢?1 和 2 的持续时间之和?
您希望此列成为累积持续时间吗? Nback# 为 1 时有持续时间吗?
也许您需要为每个实例添加一个 Nback# 0 行,其中持续时间为零。
你的要求不清楚。创建一个包含 Nback#、持续时间和此累积持续时间的 5 行示例,以便清楚需要什么。
回复:创建时间变量我确实想要价值Nback # of Letters Presented ==1 为 0。 当前测量 Nback Start 的列是一个累积总数,但我想知道该试验中每个 nback 演示已经过去了多少时间。 为此,我希望每个的开头都为 0,以便我也可以在多个试验中进行比较。
回复:创建时间变量当 Nback # of Letters Presented ==1 时,我认为您不想要 0。 您不想要该行的持续时间吗?这是截图,公式


If( :Nback # of Letters Presented == 1,
:Duration,
Lag( :Cumulative Duration, 1 ) + :Duration
)
回复:创建时间变量在创建这个总体时间度量时,我遇到了第二个问题。 我附上了一个屏幕截图,显示了迄今为止的数据。 我现在需要创建一个称为“试用时间”的变量,我基本上将“Nback start”减去“Nback stop”。
更具体地说,我需要发生几件事。
1. 当“Nback # of letters present”等于 1 时,“time in trial”应该等于 0。 然后作为“Nback # of letters present”增加了,“time in trial”也应该增加了。
2. 当我在“Nback # of letters”中达到另一个 1 并从 0 重新开始“试用时间”时,这种增加应该停止。
任何指导将不胜感激。
回复:创建时间变量我的数据设置如右图所示,就像你说的那样,你给我的脚本确实有效!
非常感谢你的帮助。 我非常感谢!
回复:创建时间变量您的数据看起来已排序。 必须有一些列代表一个独特的试验,开始和结束。如果你的数据看起来像左图,这就是我的意思,也许我应该称之为混合试验。
如果您的数据看起来像左边,第 8 行 A 试验会有 1 吗?如果是,那么该试验是否仅持续 1 个周期,还是应该继续计数?
如果你的数据看起来像右边的表格,那么我发送的函数就像你描述的那样工作,并显示在屏幕截图中
Not sorted by Trial未按试用排序
Sorted by trials and function按试验和功能排序
回复:创建时间变量我正在使用滞后函数来识别每个试验的开始和结束。 每个被试各有 4 次试验,1 和 0 并没有相互分离,它们在整个被试数据中交织在一起。 每个试验的长度将根据该特定试验的长度而有所不同,并且对于每个参与者来说都不相同。
因此,我不确定您的建议是否完全适用于我拥有的数据集。 如果有帮助的话,有一个例子说明我的 0 和 1 在我的数据集中交织在一起。
感谢您的答复!

回复:创建时间变量创建一个新列,这里我叫它:Group Order,这里是函数。 注意 JMP 有一个名为 lag() 的函数,以防您不熟悉它。
If( row()==1 | :Lag1==1, 1,
:Lag1==0, lag(:Group Order)+1
)
这当然假设您的表格已排序。 这是一个脚本,首先将 Big Class 更改为具有类似于您的表格的布局:Lag1。 然后使用上面的函数创建列。
Names default to here(1);
dt = Open("$sample_data/big class.jmp");
dt << sort( By(:sex, :age), Replace Table);
//needs to be sorted so 1's and 0's are not mixed
dt << New Column("Lag1", numeric, <<SET each="" value=""></SET>