No puedo encontrar un problema similar en StackOverflow. Pido disculpas si está ahí fuera ...
Tengo una lista de marcos de datos, todos con una columna de fecha y un valor para cada fecha. Me gustaría combinar esta lista en un marco de datos, con una columna de datos y el valor de cada lista.
Tengo esto:
> list
$IBM
Date IBM
1 2012-03-01 98
2 2012-03-02 94
3 2012-03-03 49
4 2012-03-04 48
$AAPL
Date AAPL
1 2012-03-01 43
2 2012-03-02 38
3 2012-03-03 13
4 2012-03-04 10
$HPQ
Date HPQ
1 2012-03-01 62
2 2012-03-02 67
3 2012-03-03 24
4 2012-03-04 37
Me gustaría esto:
Date IBM AAPL HPQ
1 2012-03-01 98 43 62
2 2012-03-02 94 38 67
3 2012-03-03 49 13 24
4 2012-03-04 48 10 37
Utilizando do.call("cbind", list)
Entiendo esto:
> do.call("cbind", test)
IBM.Date IBM.IBM AAPL.Date AAPL.AAPL HPQ.Date HPQ.HPQ
1 2012-03-01 98 2012-03-01 43 2012-03-01 62
2 2012-03-02 94 2012-03-02 38 2012-03-02 67
3 2012-03-03 49 2012-03-03 13 2012-03-03 24
4 2012-03-04 48 2012-03-04 10 2012-03-04 37`
Esto es muy similar a lo que quiero, pero con múltiples columnas de fecha repetida. ¿Hay alguna forma de hacer esto? Preferiblemente en el paquete base?
¡¡¡Gracias!!!
Respuestas
1 para la respuesta № 1Si tu lista se ve así
#sample data
dts<-c("2012-03-01","2012-03-02","2012-03-03","2012-03-04")
dd<-list(
IBM=data.frame(Date=dts, IBM=c(98,94,49,48)),
APPL=data.frame(Date=dts, APPL=c(43,38,13,10)),
HPQ=data.frame(Date=dts, HPQ=c(62,67,24,37))
)
Entonces puedes crear la salida que quieras con
Reduce(merge, dd)
# Date IBM APPL HPQ
# 1 2012-03-01 98 43 62
# 2 2012-03-02 94 38 67
# 3 2012-03-03 49 13 24
# 4 2012-03-04 48 10 37