Foro de debate

De Data.frame a Matrix

 
Imagen de Jose Bartolin
De Data.frame a Matrix
de Jose Bartolin - martes, 5 de diciembre de 2017, 18:04
 

Buenos días, estoy haciendo un ejercicio con 60 tiendas… estoy intentando tener todo organizado en matrices pero la información que obtengo es en data.frame. 
 
> str(test)
List of 2
 $ Maria de Molina:'data.frame':      5 obs. of  2 variables:
  ..$ date   : Date[1:5], format: "2017-11-28" "2017-11-29" "2017-11-30" "2017-12-01" ...
  ..$ PX_LAST: num [1:5] 263 263 265 264 264
 $ Tomas Morales:'data.frame': 5 obs. of  2 variables:
  ..$ date   : Date[1:5], format: "2017-11-28" "2017-11-29" "2017-11-30" "2017-12-01" ...
  ..$ PX_LAST: num [1:5] 2626 2625 2648 2644 2638
> test
$`Maria de Molina`
        date PX_LAST
1 2017-11-28  262.87
2 2017-11-29  262.71
3 2017-11-30  265.01
4 2017-12-01  264.46
5 2017-12-04  264.14
 
$`Tomas Morales`
        date PX_LAST
1 2017-11-28 2626.00
2 2017-11-29 2625.00
3 2017-11-30 2648.00
4 2017-12-01 2644.00
5 2017-12-04 2638.25
 
Si hago un > write.csv(test,file = pathTiendas) el fichero que sale es de la siguiente manera:
 


Maria.de.Molina.date
Maria.de.Molina.PX_LAST
Tomas.Morales.date
Tomas.Morales.PX_LAST
1
11/28/2017
262.87
11/28/2017
2626
2
11/29/2017
262.71
11/29/2017
2625
3
11/30/2017
265.01
11/30/2017
2648
4
12/1/2017
264.46
12/1/2017
2644
5
12/4/2017
264.14
12/4/2017
2638.25
 
Me gustaría poder modificar la data.frame para que el resultado que salga en el csv fuera:
 


1
11/28/2017
Maria de Molina
262.87
2
11/29/2017
Maria de Molina
262.71
3
11/30/2017
Maria de Molina
265.01
4
12/1/2017
Maria de Molina
264.46
5
12/4/2017
Maria de Molina
264.14
6
11/28/2017
Tomas Morales
2626
7
11/29/2017
Tomas Morales
2625
8
11/30/2017
Tomas Morales
2648
9
12/1/2017
Tomas Morales
2644
10
12/4/2017
Tomas Morales
2638.25
 
 
 
Por favor, ¿Me podeis echar una mano?
 
Gracias.

Imagen de jose cebrian
Re: De Data.frame a Matrix
de jose cebrian - miércoles, 6 de diciembre de 2017, 10:08
 

Hola
una forma algo larga de hacerla puede ser esta:


De tu dataframe test
Llamamos NUMERO  a la primera variable
maria<-test[,c(1,2,3)]# seleccionamos las filas de maria
tomas<-test[, c(1,4,5)]
names(maria)[c(2,3)] <- c("date", "Maria de Molina")
names(tomas)[c(2,3)] <- c("date", "Tomas")

test1<-merge(maria, tomas, by= c("NUMERO", "date"))

library (tidyr)
test2<-gather(test, "date","PX_LAST", c(3:4))
test2


Saludos