Мы создаем столбец последовательности по 'ID' 'Cue', а затем dcast
library(data.table)
out <- dcast(setDT(df1), ID + Cue ~ rowid(ID, Cue),
value.var = c("ID", "Cue", "trial", "time", "accuracy"))[,-(1:2)]
, а затем order
столбцы
setcolorder(out, order(as.numeric(sub(".*_", "", names(out)))))
при необходимости измените имена столбцов
setnames(out, make.unique(sub("[._].*", "", names(out))))
out
# ID Cue trial time accuracy ID.1 Cue.1 trial.1 time.1 accuracy.1 ID.2 Cue.2 trial.2 time.2 accuracy.2
#1: A apple copy 1450 1 A apple test1 2121 0 A apple final 1231 0
#2: A dog copy 2154 1 A dog test2 0 1 A dog final 5411 1
данные
df1 <- structure(list(ID = c("A", "A", "A", "A", "A", "A"), Cue = c("apple",
"dog", "apple", "dog", "apple", "dog"), trial = c("copy", "copy",
"test1", "test2", "final", "final"), time = c(1450L, 2154L, 2121L,
0L, 1231L, 5411L), accuracy = c(1L, 1L, 0L, 1L, 0L, 1L)),
class = "data.frame", row.names = c(NA, -6L))