Получить данные:
x <- read.table(textConnection(
"Trial Person
1 John
2 John
3 John
4 John
1 Bill
2 Bill
3 Bill
4 Bill"), header=TRUE)
Я думаю, что ваш текущий подход правильный (примечание: вам не нужен as.numeric, потому что он автоматически приводится при выполнении сложения в этом случае):
(x$Trial >= 3) + 1
В противном случае, вот способ сделать это с помощью plyr. * +1007 *
library(plyr)
ddply(x, .(Person), transform, Day=rep(c(1,2), each=2))