Is there a general `Transpose`

for `Dataset`

/`Association`

that will transpose arbitrary levels, such as

```
Transpose[array, perm]
```

which will permute the levels of `array`

according to the permutation `perm`

? One seems to be able to use `Transpose[ds]`

to transpose levels 1 and 2 and `Map[Query@Transpose, ds, {n}]`

to transpose levels `n+1`

and `n+2`

. But they only work on “adjacent” levels. To transpose levels 1 and 3 (i.e. `perm = {3, 2, 1}`

), I seem to have to do something like the following

```
Transpose[Transpose /@ Transpose@ assoc]
Transpose[ds][Transpose, Transpose]
```

Is there a general way to do this for an arbitrary permutation of the levels of the data?

(I give a solution below, but as I’m learning how to use `Dataset`

, I figure there are better ways.)