【发布时间】:2022-12-07 04:26:37
【问题描述】:
我有记录主题和会话信息的数据,如下所示:
> Subject <- c(rep("A", 6), rep("B", 7))
> Session <- c(rep(1, 3), rep(2, 3), rep(8, 4), rep(9, 3))
> df <- data.frame(Subject, Session)
> df
Subject Session
1 A 1
2 A 1
3 A 1
4 A 2
5 A 2
6 A 2
7 B 8
8 B 8
9 B 8
10 B 8
11 B 9
12 B 9
13 B 9
问题在于原始数据并不总是具有一致的会话编号(因此受试者 B 的第一个会话从会话 8 而不是 1 开始)。理想情况下,有一个列可以在每个新主题出现时重置会话编号。像这样:
Subject Session New_Sess
1 A 1 1
2 A 1 1
3 A 1 1
4 A 2 2
5 A 2 2
6 A 2 2
7 B 8 1
8 B 8 1
9 B 8 1
10 B 8 1
11 B 9 2
12 B 9 2
13 B 9 2
我尝试了一个带有嵌套 for 循环的解决方案,但无法让它工作。我怀疑一定有一个直接的解决方案(它似乎不应该那么困难)但是尽管我尽了最大的努力,它已经完全避开了我。
实际数据集非常庞大且繁琐,因此针对此问题的自动化解决方案会有所帮助。
【问题讨论】:
标签: r dataframe sequence nested-loops