Вы можете отменить транспонирование df_before
data.frame, а затем использовать функцию lead
из dplyr
для смещения столбцов
library(data.table)
library(dplyr)
df_before <- data.table(
x = c(1, 2, 3, 4, 5),
y = c(0, 6, 7, 8, 9),
z = c(0, 0, 11, 12, 13))
df_after <- t(data.table(
x = c(1, 2, 3, 4, 5),
y = c(6, 7, 8, 9, NA),
z = c(11, 12, 13, NA, NA)))
df_before[] <-lapply(1:ncol(df_before), function(x){
dplyr::lead(df_before[[x]],n= x-1)
})
Если вам необходимо транспонировать данные после этого шага:
df_after2 <- t(df_before)
all.equal(df_after,df_after2) # TRUE