【发布时间】:2019-09-23 17:22:01
【问题描述】:
我有一个如下所示的 data.frame 列
a$`1`
1 1316.100
2 0.200
3 131.600
4 0.500
5 49.600
6 0.500
7 183.100
8 0.200
9 1307.100
10 0.200
11 2.100
12 12.100
13 8.100
14 649.100
15 0.200
16 503.600
17 0.500
18 231.100
19 0.200
20 2527.600
21 0.500
22 90.100
23 0.200
小数点前的数字为秒*100。小数点后的数字为指标值。我正在做一个固定比例的选择任务。其中,可能出现正确的选择(标记为“.100”)或错误的选择(标记为“.600”,后面总是跟着“0.500”)。如果选择了正确的选择并给出了奖励(标记为“.100”,后跟“0.200”),则超时时间为 10 秒。在此期间,可以做出选择(标记为“.100”或“.600”/“0.500”),但在超时期限结束之前不会给予奖励。
问题是我不知道何时发生超时。
如何为超时时间添加指标值?例如,在每个“0.200”值之后放置一个“0.700”值来标记超时的开始。然后在 10 秒后放置一个“0.800”值来标记超时结束。
编辑:我想 for lop 在这里会派上用场吗?我想对每个 0.200 值之后的值求和。一旦行值的总和超过 10 秒,放置一个 0.800 的值,然后继续到下一个 0.200 的值。最后,在每 0.200 之后,放置一个 0.700。 0.700 将标记超时开始,0.800 将标记超时(10 秒)停止。我的专栏应该是这样的......
a$`1`
1316.100
0.200
0.700
131.600
0.500
49.600
0.500
0.800
183.100
0.200
0.700
0.800
1307.100
0.200
0.700
2.100
12.100
8.100
0.800
649.100
0.200
0.700
0.800
503.600
0.500
231.100
0.200
0.700
0.800
2527.600
0.500
90.100
0.200
【问题讨论】:
-
是否有任何理由将这两个不同的值作为十进制数保留在一列中?我强烈建议您将值拆分为秒部分和标志部分。否则,您可能会在尝试精确匹配十进制值时遇到问题,而浮点数并不总是那么容易。您应该在 reproducible format 中提供您的示例数据,并提供所需的输出,以便可以测试和验证可能的解决方案。
-
谢谢,我添加了它应该是什么样子的编辑。我有一堆列和行要经过,这就是为什么我希望有一种更简单的方法来做到这一点。我希望留下十进制标志(或至少在最后添加回来)以指示正确或不正确的响应。另外,我会添加我的原始文本文件,但我不知道该怎么做。所以,我只是给出了一个示例列。
-
你能在这里描述一下你的最终目标/最终期望的输出吗? “放置 0.800 值”步骤听起来像是一个潜在的 XY 问题,即可能有更直接的方法。(meta.stackexchange.com/questions/66377/what-is-the-xy-problem)
-
同意 MrFlick 的观点,将多种类型的数据存储在单个列中通常是违反最佳做法的。如果您需要保留原始列以实现向后兼容性,那很好,但对于您的分析,将其拆分为
Time列和Response列非常有意义。这样您就不必玩参考双精度/字符串的前半部分和后半部分的游戏来进行分析/操作。 -
好的,谢谢,我可以试试。是否有一个 for 循环(或其他东西)我可以编写(至少作为开始)来读取行并在每个 0.200 值之后插入一个 0.700 值?
标签: r