Reformar múltiples valores a la vez

Tengo un conjunto de datos largo que me gustaría ampliar y tengo curiosidad por saber si hay una manera de hacerlo todo en un solo paso utilizando los paquetes reshape2 o tidyr en R.

El marco de datosdf Se ve como esto:

id  type    transactions    amount
20  income       20          100
20  expense      25          95
30  income       50          300
30  expense      45          250

Me gustaría llegar a esto:

id  income_transactions expense_transactions    income_amount   expense_amount
20       20                           25                 100             95
30       50                           45                 300             250

Sé que puedo obtener parte del camino con reshape2 a través de, por ejemplo:

dcast(df, id ~  type, value.var="transactions")

Pero, ¿hay alguna forma de remodelar todo el df de una sola vez para abordar las variables "transacciones" y "cantidad" a la vez? ¿E idealmente con nuevos nombres de columna más apropiados?

Respuestas a la pregunta(2)

Su respuesta a la pregunta