Один способ сделать это так:
Данные:
dt <- read.table(text=c("ID Study X Y Z Time",
"1 2 3 4 5 0",
"2 2 3 4 5 0",
"3 2 3 4 5 0"), header=T)
Решение:
vect <- list(c(0,1,1.3,4,5,8,24,34,55,66)) #convert the vector to a list
dt$Time <- vect #use that converted list to add as column, it will replace the existing Time column
dt <- tidyr::unnest(dt, Time) #use tidyr::unnest to unnest the column time
ИЛИ, как предлагает @thelatemail, вы можете использовать baseR следующим образом (используя векторизацию по умолчанию в Base R):
newdt <- dt[rep(seq_len(nrow(dt)), each=length(vect)),]
newdt$Time <- vect #We can see the vectorization of values in R here
У меня есть два предположения: существующая переменная Time полностью равна нулю, и вы хотитенулевое значение времени для каждого идентификатора сверху.
Выход :
# ID Study X Y Z Time
# 1 1 2 3 4 5 0.0
# 2 1 2 3 4 5 1.0
# 3 1 2 3 4 5 1.3
# 4 1 2 3 4 5 4.0
# 5 1 2 3 4 5 5.0