r - 找到 x 连续响应的点

标签 r

我试图找到参与者连续达到 8 个连续响应的点。数据来自类别学习任务,因此变量如下所示:

R> data
 [1] 1 1 1 0 0 0 0 0 1 0 1 1 1 1 1 1 1 1 1 1..

我正在尝试查找参与者达到我们的学习标准的试验编号 - 连续 8 个正确答案(1 代表正确答案)。所以我想从上面的例子中返回 18,因为在第 18 次试验中,参与者连续做出了 8 个正确答案。

很抱歉,如果这个问题已在其他地方得到回答。我环顾四周,发现了一些类似的问题,但我无法弄清楚如何直接应用于我的问题。我今天刚刚开始使用 R(从 SPSS 切换),所以我仍在学习。

提前致谢!如果我需要提供更多详细信息,请告诉我。

最佳答案

设置

x <- c(1, 1, 1, 0, 0, 0, 0, 0, 1, 0, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1)

这里有两种方法:

1) 嵌入。使用 embed 查找第一行 1,如下所示:

> which(rowSums(embed(x, 8)) == 8)[1] + 8 - 1
[1] 18

2) 滚动应用。有了动物园包就没有那么棘手了。这样我们就可以对最后 8 个值进行滚动求和,然后找到它第一次变为 8 的时间:

> library(zoo)
> r <- rollapply(zoo(x), 8, sum, align = "right")
> time(r[r == 8][1])
[1] 18

关于r - 找到 x 连续响应的点,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5446240/

相关文章:

r - 将数据框中的多行与索引列叠加到现有图中

r - 在线图周围插入边框

sql - 使用 R 对两列进行分组并计算不同值

r - 在 R 中快速计算字符串中的数字

r - 调整 highlight.sector() 宽度和位置 - R 中的弦图(circlize 包)

r - 如何在 dplyr 中使用或/和对 data.frame 进行子集化

string - 从CSV文件读取的数据帧中删除级别-R

r - R 中预聚合/分组数据的箱线图

r - 将 data.frame 转换为单行

r - 查找列中变化的索引