Another attempt:
newnames <- c("value1","value2")
data.frame(
test.df[c("group","var")],
variable=rep(c("min-max","q25-q75"),each=nrow(test.df)),
rbind(
setNames(test.df[c("min","max")],newnames),
setNames(test.df[c("q25","q75")],newnames)
)
)
Result:
group var variable value1 value2
1 a 1 min-max 0.6939545 3.479807
2 a 2 min-max 0.5646825 3.564637
3 a 3 min-max 0.3509824 3.928308
4 a 4 min-max 0.4217888 3.376821
5 b 1 min-max 0.6493916 3.933157
6 b 2 min-max 0.3978330 3.129940
7 b 3 min-max 0.4407376 3.707715
8 b 4 min-max 0.1651875 3.798546
9 a 1 q25-q75 1.3531055 2.242076
10 a 2 q25-q75 1.1811900 2.240188
11 a 3 q25-q75 1.3043822 2.695175
12 a 4 q25-q75 1.3315480 2.542576
13 b 1 q25-q75 1.2397527 2.107442
14 b 2 q25-q75 1.1973467 2.545511
15 b 3 q25-q75 1.9193746 2.502551
16 b 4 q25-q75 1.0425474 2.225601