[R] matrix transformation into 3 columns II.

Gabor Grothendieck ggrothendieck at gmail.com
Fri May 19 00:07:20 CEST 2006


On 5/18/06, Rado Bonk <rado.bonk at jrc.it> wrote:
> Dear  R-users
>
> Sorry for posting the previous message too soon before I have finished it.
>
> I have matrix (mprecip) with headers:
>
>  > dim(mprecip)
> [1] 6268  170
>
>  > mprecip
>            date GilzeRijen Eindhoven Volkel ZuidLimburg Arcen Ubachsberg
> 1    01/01/1978         NA       0.0     NA         0.1    NA         NA
> 2    01/02/1978         NA       0.0     NA         0.0    NA         NA
> 3    01/03/1978         NA       1.9     NA         0.7    NA         NA
> 4    01/04/1978         NA       3.5     NA         6.9    NA        6.0
> 5    01/05/1978         NA       1.6     NA         1.8    NA        1.3
> 6    01/06/1978         NA       0.0     NA         0.0    NA         NA
> 7    01/07/1978         NA       0.0     NA         0.0    NA         NA
> 8    01/08/1978         NA       0.0     NA         0.0    NA         NA
>
> Columns are: DATE and PRECIP values for each station listed in the header.
>
> I would like to transform the matrix into three columns (database like)
> to be able to load the data in the database. Here is the output I would
> like to get get it, number of rows = ncol x nrow. Output should look
> like this:
>
> STATION_NAME1 DATE PRECIP
> STATION_NAME1 DATE PRECIP
> STATION_NAME1 DATE PRECIP
> STATION_NAME1 DATE PRECIP
> .
> .
> .
> .
> STATION_NAME2 DATE PRECIP
> STATION_NAME2 DATE PRECIP
> STATION_NAME2 DATE PRECIP
> .
> .
> .
> STATION_NAME170 DATE PRECIP
> STATION_NAME170 DATE PRECIP
> STATION_NAME170 DATE PRECIP
> STATION_NAME170 DATE PRECIP
> STATION_NAME170 DATE PRECIP
>
>
Try this:

> library(reshape)
> melt(mprecip, 1, variable = "Station")
         date     Station value
1  01/01/1978  GilzeRijen    NA
2  01/02/1978  GilzeRijen    NA
3  01/03/1978  GilzeRijen    NA
4  01/04/1978  GilzeRijen    NA
5  01/05/1978  GilzeRijen    NA
6  01/06/1978  GilzeRijen    NA
7  01/07/1978  GilzeRijen    NA
8  01/08/1978  GilzeRijen    NA
11 01/01/1978   Eindhoven   0.0
21 01/02/1978   Eindhoven   0.0
31 01/03/1978   Eindhoven   1.9
41 01/04/1978   Eindhoven   3.5
51 01/05/1978   Eindhoven   1.6
61 01/06/1978   Eindhoven   0.0
71 01/07/1978   Eindhoven   0.0
81 01/08/1978   Eindhoven   0.0
12 01/01/1978      Volkel    NA
22 01/02/1978      Volkel    NA
32 01/03/1978      Volkel    NA
42 01/04/1978      Volkel    NA
52 01/05/1978      Volkel    NA
62 01/06/1978      Volkel    NA
72 01/07/1978      Volkel    NA
82 01/08/1978      Volkel    NA
13 01/01/1978 ZuidLimburg   0.1
23 01/02/1978 ZuidLimburg   0.0
33 01/03/1978 ZuidLimburg   0.7
43 01/04/1978 ZuidLimburg   6.9
53 01/05/1978 ZuidLimburg   1.8
63 01/06/1978 ZuidLimburg   0.0
73 01/07/1978 ZuidLimburg   0.0
83 01/08/1978 ZuidLimburg   0.0
14 01/01/1978       Arcen    NA
24 01/02/1978       Arcen    NA
34 01/03/1978       Arcen    NA
44 01/04/1978       Arcen    NA
54 01/05/1978       Arcen    NA
64 01/06/1978       Arcen    NA
74 01/07/1978       Arcen    NA
84 01/08/1978       Arcen    NA
15 01/01/1978  Ubachsberg    NA
25 01/02/1978  Ubachsberg    NA
35 01/03/1978  Ubachsberg    NA
45 01/04/1978  Ubachsberg   6.0
55 01/05/1978  Ubachsberg   1.3
65 01/06/1978  Ubachsberg    NA
75 01/07/1978  Ubachsberg    NA
85 01/08/1978  Ubachsberg    NA




More information about the R-help mailing list