我有一个数据集,其中每一行表示参与者的一次正确/错误交互。我想计算错误交互的数量,直到参与者记录了两次正确答案。
我的数据框如下所示:
id = c(1,1,1,1,1,1,2,2,2,2,2,2,2,3,3,3,3,3,3,3,3)
accuracy = c(0,1,0,0,1,1,1,0,0,0,1,1,1,0,0,0,0,0,1,1,1)
timestamp = c(2405.078,2409.575,2414.239,2419.084,2424.138,2428.510,805.5845,812.2674,817.6420,822.5424,828.0416,832.9703,842.2013,456.9943,463.0222,469.0649,475.2177,480.3976,486.9402,491.5632,497.0068)
df <-data.frame(id, accuracy, timestamp)
我正在考虑使用 rle 函数,但我不知道如何添加条件。我需要创建一个新变量,它为我提供了满足条件之前的试验计数。
它应该看起来像这样:
身份证 | 试用次数 |
---|---|
1 | 5 |
2 | 5 |
3 | 4 |
理想情况下,我会添加另一列来计算达到时间戳条件所需的时间。 感谢您的帮助!
我最初会这样做:
df |> dplyr::mutate(tworight = cumsum(accuracy) >1, .by = id)
给出:
id accuracy timestamp tworight
1 1 0 2405.0780 FALSE
2 1 1 2409.5750 FALSE
3 1 0 2414.2390 FALSE
4 1 0 2419.0840 FALSE
5 1 1 2424.1380 TRUE
6 1 1 2428.5100 TRUE
7 2 1 805.5845 FALSE
8 2 0 812.2674 FALSE
9 2 0 817.6420 FALSE
10 2 0 822.5424 FALSE
11 2 1 828.0416 TRUE
12 2 1 832.9703 TRUE
13 2 1 842.2013 TRUE
14 3 0 456.9943 FALSE
15 3 0 463.0222 FALSE
16 3 0 469.0649 FALSE
17 3 0 475.2177 FALSE
18 3 0 480.3976 FALSE
19 3 1 486.9402 FALSE
20 3 1 491.5632 TRUE
21 3 1 497.0068 TRUE
这有帮助吗?