Для каждой пары субъект / условие создайте порядковый номер seq
для ее строк, а затем сохраняйте только те строки, чей порядковый номер меньше 3.
subset(transform(DF, seq = ave(value, subject, condition, FUN = seq_along)), seq < 3)
дает:
subject condition value seq
1 01 A 12 1
2 01 A 6 2
3 01 B 10 1
4 01 B 2 2
5 02 A 5 1
6 02 A 11 2
7 02 B 3 1
8 02 B 5 2
Примечание
Предполагается, что входные данные в воспроизводимой форме:
Lines <- "subject condition value
01 A 12
01 A 6
01 B 10
01 B 2
02 A 5
02 A 11
02 B 3
02 B 5
02 B 9"
DF <- read.table(text = Lines, header = TRUE, strip.white = TRUE,
colClasses = c("character", "character", "numeric"))