我有一个数据帧,目前如下所示:

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循环的替代方案.提前感谢,如果需要澄清,请让我知道!

推荐答案

我们可以在unique个值上使用match,在按‘subjectID’分组后

library(dplyr)
df1 <- df1 %>% 
  group_by(subjectID) %>%
  mutate(NewTrial = match(Trial, unique(Trial))) %>%
  ungroup

R相关问答推荐

通过R访问MoveApps API

是否有R函数来判断一个组中的所有值是否与另一个组中的所有值相同?

导入到固定列宽的R中时出现问题

使用spatVector裁剪网格数据时出现的问题

如何在R中正确对齐放射状图中的文本

Tidyverse/Djirr为从嵌套列表中提取的列名赋值的解决方案

如何在R中添加截止点到ROC曲线图?

在"gt"表中添加第二个"groupname_col",而不连接列值

基于多列将值链接到NA

如何在emmeans中计算连续变量的对比度

如何在编辑列时更新可编辑数据表,并使用该表在Shiny中执行连续计算

如何在区分不同条件的同时可视化跨时间的连续变量?

如何在R中描绘#符号?

无法定义沿边轨迹的 colored颜色 渐变(与值无关)

是否有新方法来更改Facet_WRAP(Ggplot2)中条文本的文本 colored颜色 ?

R如何将列名转换为更好的年和月格式

如果COLSUM为>;0,则COLNAME为向量

按组跨多列创建伪变量

网络抓取新闻标题和时间

如何将图例文本添加到图例符号中