我有一个数据帧,目前如下所示:
subjectID | Trial |
---|---|
1 | 3 |
1 | 3 |
1 | 3 |
1 | 4 |
1 | 4 |
1 | 5 |
1 | 5 |
1 | 5 |
2 | 1 |
2 | 1 |
2 | 3 |
2 | 3 |
2 | 3 |
2 | 5 |
2 | 5 |
2 | 6 |
3 | 1 |
等,其中试验编号嵌套在主题ID.我需要做一个新的列中的"NewTrial"列是什么顺序的试验现在出现.例如:
subjectID | Trial | NewTrial |
---|---|---|
1 | 3 | 1 |
1 | 3 | 1 |
1 | 3 | 1 |
1 | 4 | 2 |
1 | 4 | 2 |
1 | 5 | 3 |
1 | 5 | 3 |
1 | 5 | 3 |
2 | 1 | 1 |
2 | 1 | 1 |
2 | 3 | 2 |
2 | 3 | 2 |
2 | 3 | 2 |
2 | 5 | 3 |
2 | 5 | 3 |
2 | 6 | 4 |
3 | 1 | 1 |
到目前为止,我已经编写了一个for循环,如下所示:
for (myperson in unique(data$subjectID)){
#This line creates a vector of the number of unique trials per subject: for subject 1, c(1, 2, 3)
triallength=1:length(unique(data$Trial[data$subID==myperson]))
我现在很难找到一种方法来将创建的triallength
向量中的数字粘贴为数据帧中的一列.有谁知道有什么方法可以做到这一点吗?我在for循环方面缺乏一些经验,希望能获得更多.然而,如果有人有tidyVerse/dplyr解决方案,我愿意接受它以及for循环的替代方案.提前感谢,如果需要澄清,请让我知道!