Convertir filas comunes de marcos de datos en columnas

Digamos que tengo un marco de datos en el que una columna tiene algún valor de repetición (fechas, ID, etc.). ¿Hay alguna manera de convertir un marco de datos en un marco de datos ahora con columnas en lugar de replicar filas? Básicamente quiero transponer algo como esto:

col1 col2 col3
1    aa   30
2    aa   40
3    aa   10
1    bb   20
2    bb   12
3    bb   15
1    cc   40
2    cc   31
3    cc   12

Dentro de esto:

    aa   bb   cc
1   30   20   40
2   40   12   31
3   10   15   12

Aquí hay un código que hace una muestra del primer marco de datos:

a <- c(rep(1:10, 3))
b <- c(rep("aa", 10), rep("bb", 10), rep("cc", 10))
set.seed(123)
c <- sample(seq(from = 20, to = 50, by = 5), size = 30, replace = TRUE)
d <- data.frame(a,b, c)

No estoy seguro de cómo transponerlo.

Respuestas a la pregunta(5)

Su respuesta a la pregunta