对于如下所示的数据,我试图添加一列来记录试用订单。数据中按试验顺序记录反应时间(rt
s);即被试p1
依次对i1
、i2
、i3
产生反应;被试p2
对i2
、i1
、i3
的反应顺序依次为:最后参与者p3
按此顺序对i3
和i1
做出反应。
library(tidyverse) # For dplyr, tibble, and purrr
data <- tribble(
~ p, ~ r, ~ i, ~ rt,
"p1", "r1", "i1", 1234,
"p1", "r2", "i1", 1256,
"p1", "r3", "i1", 1256,
"p1", "r4", "i1", 1256,
"p1", "qq", "i1", 1356,
"p1", "r1", "i2", 1356,
"p1", "r2", "i2", 1356,
"p1", "r3", "i2", 1376,
"p1", "qq", "i2", 1374,
"p1", "r1", "i3", 1374,
"p1", "r2", "i3", 1174,
"p1", "r3", "i3", 1174,
"p1", "qq", "i3", 1173,
"p2", "r1", "i2", 1163,
"p2", "r2", "i2", 1163,
"p2", "r3", "i2", 1163,
"p2", "qq", "i2", 1163,
"p2", "r1", "i1", 1263,
"p2", "r2", "i1", 1263,
"p2", "r3", "i1", 1295,
"p2", "r4", "i1", 1495,
"p2", "qq", "i1", 1495,
"p2", "r1", "i3", 1414,
"p2", "r2", "i3", 1414,
"p2", "r3", "i3", 1414,
"p2", "qq", "i3", 1484,
"p3", "r1", "i3", 1484,
"p3", "r2", "i3", 1182,
"p3", "r3", "i3", 1182,
"p3", "qq", "i3", 1282,
"p3", "r1", "i1", 1282,
"p3", "r2", "i1", 1282,
"p3", "r3", "i1", 1232,
"p3", "r4", "i1", 1232,
"p3", "qq", "i1", 1234
)
因此,我想通过在上面的数据中添加一列来表示试验顺序,从而获得一个新数据,如下所示:
| p | r | i | rt | trial_order |
| "p1" | "r1" | "i1" | 1234 | 1 |
| "p1" | "r2" | "i1" | 1256 | 1 |
| "p1" | "r3" | "i1" | 1256 | 1 |
| "p1" | "r4" | "i1" | 1256 | 1 |
| "p1" | "qq" | "i1" | 1356 | 1 |
| "p1" | "r1" | "i2" | 1356 | 2 |
| "p1" | "r2" | "i2" | 1356 | 2 |
| "p1" | "r3" | "i2" | 1376 | 2 |
| "p1" | "qq" | "i2" | 1374 | 2 |
| "p1" | "r1" | "i3" | 1374 | 3 |
| "p1" | "r2" | "i3" | 1174 | 3 |
| "p1" | "r3" | "i3" | 1174 | 3 |
| "p1" | "qq" | "i3" | 1173 | 3 |
| "p2" | "r1" | "i2" | 1163 | 1 |
| "p2" | "r2" | "i2" | 1163 | 1 |
| "p2" | "r3" | "i2" | 1163 | 1 |
| "p2" | "qq" | "i2" | 1163 | 1 |
| "p2" | "r1" | "i1" | 1263 | 2 |
| "p2" | "r2" | "i1" | 1263 | 2 |
| "p2" | "r3" | "i1" | 1295 | 2 |
| "p2" | "r4" | "i1" | 1495 | 2 |
| "p2" | "qq" | "i1" | 1495 | 2 |
| "p2" | "r1" | "i3" | 1414 | 3 |
| "p2" | "r2" | "i3" | 1414 | 3 |
| "p2" | "r3" | "i3" | 1414 | 3 |
| "p2" | "qq" | "i3" | 1484 | 3 |
| "p3" | "r1" | "i3" | 1484 | 1 |
| "p3" | "r2" | "i3" | 1182 | 1 |
| "p3" | "r3" | "i3" | 1182 | 1 |
| "p3" | "qq" | "i3" | 1282 | 1 |
| "p3" | "r1" | "i1" | 1282 | 2 |
| "p3" | "r2" | "i1" | 1282 | 2 |
| "p3" | "r3" | "i1" | 1232 | 2 |
| "p3" | "r4" | "i1" | 1232 | 2 |
| "p3" | "qq" | "i1" | 1234 | 2 |
我试着在这个和这个之后使用dplyr::cur_group_id()
,但我最终遇到了一个问题,dplyr::cur_group_id()
不尊重项目呈现给每个参与者的顺序。相反,dplyr::cur_group_id()
反映了项目的字母顺序。我应该修改什么?
# A tibble: 35 × 5
# Groups: i [3]
p r i rt ID
<chr> <chr> <chr> <dbl> <int>
1 p1 r1 i1 1234 1
2 p1 r2 i1 1256 1
3 p1 r3 i1 1256 1
4 p1 r4 i1 1256 1
5 p1 qq i1 1356 1
6 p1 r1 i2 1356 2
7 p1 r2 i2 1356 2
8 p1 r3 i2 1376 2
9 p1 qq i2 1374 2
10 p1 r1 i3 1374 3
11 p1 r2 i3 1174 3
12 p1 r3 i3 1174 3
13 p1 qq i3 1173 3
14 p2 r1 i2 1163 2 # This should be 1
15 p2 r2 i2 1163 2 # This should be 1
16 p2 r3 i2 1163 2 # This should be 1
17 p2 qq i2 1163 2 # This should be 1
18 p2 r1 i1 1263 1 # This should be 2
19 p2 r2 i1 1263 1 # This should be 2
20 p2 r3 i1 1295 1 # This should be 2
21 p2 r4 i1 1495 1 # This should be 2
22 p2 qq i1 1495 1 # This should be 2
23 p2 r1 i3 1414 3 # This should be 3
24 p2 r2 i3 1414 3 # This should be 3
25 p2 r3 i3 1414 3 # This should be 3
26 p2 qq i3 1484 3 # This should be 3
27 p3 r1 i3 1484 2 # This should be 1
28 p3 r2 i3 1182 2 # This should be 1
29 p3 r3 i3 1182 2 # This should be 1
30 p3 qq i3 1282 2 # This should be 1
31 p3 r1 i1 1282 1 # This should be 2
32 p3 r2 i1 1282 1 # This should be 2
33 p3 r3 i1 1232 1 # This should be 2
34 p3 r4 i1 1232 1 # This should be 2
35 p3 qq i1 1234 1 # This should be 2
<标题>兆瓦h1> div class="one_answers">您可以使用match()
+unique()
:
library(dplyr)
data %>%
group_by(p) %>%
mutate(ID = match(i, unique(i))) %>%
ungroup()
# A tibble: 35 × 5
p r i rt ID
<chr> <chr> <chr> <dbl> <int>
1 p1 r1 i1 1234 1
2 p1 r2 i1 1256 1
3 p1 r3 i1 1256 1
4 p1 r4 i1 1256 1
5 p1 qq i1 1356 1
6 p1 r1 i2 1356 2
7 p1 r2 i2 1356 2
8 p1 r3 i2 1376 2
9 p1 qq i2 1374 2
10 p1 r1 i3 1374 3
11 p1 r2 i3 1174 3
12 p1 r3 i3 1174 3
13 p1 qq i3 1173 3
14 p2 r1 i2 1163 1
15 p2 r2 i2 1163 1
16 p2 r3 i2 1163 1
17 p2 qq i2 1163 1
18 p2 r1 i1 1263 2
19 p2 r2 i1 1263 2
20 p2 r3 i1 1295 2
21 p2 r4 i1 1495 2
22 p2 qq i1 1495 2
23 p2 r1 i3 1414 3
24 p2 r2 i3 1414 3
25 p2 r3 i3 1414 3
26 p2 qq i3 1484 3
27 p3 r1 i3 1484 1
28 p3 r2 i3 1182 1
29 p3 r3 i3 1182 1
30 p3 qq i3 1282 1
31 p3 r1 i1 1282 2
32 p3 r2 i1 1282 2
33 p3 r3 i1 1232 2
34 p3 r4 i1 1232 2
35 p3 qq i1 1234 2
标题>