Diagrama de barra de ggplot con orden de categorías dependiente de facetas

He visto muchas preguntas (a menudo vinculadas aOrdenar barras en ggplot2 gráfico de barras) sobre cómo (re) ordenar categorías en un gráfico de barras.

Lo que busco es solo un toque diferente, pero no he encontrado una buena manera de hacerlo: tengo un gráfico de barras multifacético, y quiero ordenar el eje x para cada faceta de forma independiente, de acuerdo con otra variable ( en mi caso, esa variable es solo el valor y en sí, es decir, solo quiero que las barras vayan en longitud creciente en cada faceta).

Ejemplo simple, siguiendo por ejemploOrdenar barras en ggplot2 gráfico de barras:

df <- data.frame(name=c('foo','bar','foo','bar'),period=c('old','old','recent','recent'),val=c(1.23,2.17,4.15,3.65))
p = ggplot(data = df, aes(x = reorder(name, val), y = val))
p = p + geom_bar(stat='identity')
p = p + facet_grid(~period)
p

Lo que obtenemos es lo siguiente:

Mientras que lo que quiero es:

Respuestas a la pregunta(4)

Su respuesta a la pregunta