Если нам нужно преобразовать в «длинный» формат несколько наборов столбцов, тогда melt
из data.table
- это опция
library(data.table)
dt <- unique(melt(setDT(dat), measure = list(2:3, 4:5),
value.name = c('parameter', 'coeft')))[, variable := NULL][order(sim)]
dt
# sim parameter coeft
# 1: 1 mu -1.9100
# 2: 1 sigma -0.9670
# 3: 1 sd -0.6010
# 4: 2 mu -1.9500
# 5: 2 sigma 0.6760
# 6: 2 sd 0.0645
# 7: 3 mu -0.8910
# 8: 3 sigma -0.3280
# 9: 3 sd 0.6730
#10: 4 mu -2.3000
#11: 4 sigma 0.6790
#12: 4 sd 1.0800
#13: 5 mu -0.5980
#14: 5 sigma -0.3390
#15: 5 sd 1.9900
data
dat <- structure(list(sim = c(1L, 1L, 2L, 2L, 3L, 3L, 4L, 4L, 5L, 5L
), parameter = c("mu", "sigma", "mu", "sigma", "mu", "sigma",
"mu", "sigma", "mu", "sigma"), param = c("sd", "sd", "sd", "sd",
"sd", "sd", "sd", "sd", "sd", "sd"), coeft = c(-1.91, -0.967,
-1.95, 0.676, -0.891, -0.328, -2.3, 0.679, -0.598, -0.339), value = c(-0.601,
-0.601, 0.0645, 0.0645, 0.673, 0.673, 1.08, 1.08, 1.99, 1.99)),
.Names = c("sim",
"parameter", "param", "coeft", "value"),
class = "data.frame", row.names = c(NA,
-10L))