【发布时间】:2021-11-09 23:24:05
【问题描述】:
我正在尝试创建一个新列(下表中的expected_result),根据“两个相同刺激之间有多少不同的刺激”分配数字(如果最后一行是相同的刺激,如果最后一行是相同的刺激,则为 2,等等)。此外,刺激第一次出现的时间是 1 而不是 0。
在下面的示例中,
- stimulus 列的第一个元素是 'CS',因此预期结果是 '1'。
- stimulus 列的第二个和第三个元素仍然是 'CS',对于它们来说,最后一行是与自身相同的元素,所以预期结果仍然是'1'。
- 对于第三行之后的下一个'CS'(也就是第6行),在最后一个'CS'之前还有3行,所以预期的结果是3.
我想将此规则应用于列刺激中的每个元素
示例数据
example <- structure(list(stimulus = c("CS", "CS", "CS", "S2", "S2", "CS",
"S3", "S2", "S3"), expected_result = c(1, 1, 1, 1, 1, 3, 1, 3,
2)), row.names = c(NA, -9L), class = c("data.table", "data.frame"
))
【问题讨论】:
-
我不明白你的问题 - 你能说得清楚一点吗?
-
@DanielV,对不起,我在问题中添加了一些解释,希望现在更清楚。规则是'根据列中最后一个相同元素的行数分配数字,当最后一个相同元素(第一次出现)有0行时分配1而不是0'
标签: r