Foro de debate

Concatenar columnas "por años"

Concatenar columnas "por años"

by Jorge Castel Clavera -
Number of replies: 1

Muy buenas a todos,

Tengo un data frame del tipo:

    PIX   1990   1991 1992 1993  1994 1995 1996 1997  1998 1999 2000 2001 2002
1 6819  0.718  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
2 6820  3.806  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66
3 6821  0.036  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
4 6822  3.806  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.62
5 6823  0.963  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.25 
6 6824  0.000  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00

Pero con mas años y mñas de 3000 píxeles (PIX)

Necesito convertirlo en tres únicas columnas:

PIX       YEAR   valor

6819     1990   0.718

6820     1990   3.806

6821     1990   0.036 

6819     1991   0.00

6820     1992   1.66

6821     1993   0.00

¿Cómo puedo hacerlo en r?

¡¡Muchas gracias!!

In reply to Jorge Castel Clavera

Re: Concatenar columnas "por años"

by Manuel Muñoz Márquez -

Buenas Jorge:

Creo que esto es lo que quieres.

Un saludo.

> d <- matrix(c(6819,0.718,0,0,0,0,0,0,0,0,0,0,0,0, 6820,3.806,1.66,1.66,1.66,1.66,1.66,1.66,1.66,1.66,1.66,1.66,1.66,1.66, 6821,0.036,0,0,0,0,0,0,0,0,0,0,0,0, 6822,3.806,0.61,0.61,0.61,0.61,0.61,0.61,0.61,0.61,0.61,0.61,0.61,0.62, 6823,0.963,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.19,0.25, 6824,0,0,0,0,0,0,0,0,0,0,0,0,0), ncol=14, byrow=TRUE)
> colnames(d) <- c("PIX","X1990","X1991","X1992","X1993","X1994","X1995","X1996","X1997","X1998","X1999","X2000","X2001","X2002")
> d <- data.frame(d)
> d
   PIX X1990 X1991 X1992 X1993 X1994 X1995 X1996 X1997 X1998 X1999 X2000 X2001
1 6819 0.718  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
2 6820 3.806  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66  1.66
3 6821 0.036  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
4 6822 3.806  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61  0.61
5 6823 0.963  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19  0.19
6 6824 0.000  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00  0.00
  X2002
1  0.00
2  1.66
3  0.00
4  0.62
5  0.25
6  0.00
> reshape(d, varying = list(2:14), direction='long')
      PIX time X1990 id
1.1  6819    1 0.718  1
2.1  6820    1 3.806  2
3.1  6821    1 0.036  3
4.1  6822    1 3.806  4
5.1  6823    1 0.963  5
6.1  6824    1 0.000  6
1.2  6819    2 0.000  1
2.2  6820    2 1.660  2
3.2  6821    2 0.000  3
4.2  6822    2 0.610  4
5.2  6823    2 0.190  5
6.2  6824    2 0.000  6
1.3  6819    3 0.000  1
2.3  6820    3 1.660  2
3.3  6821    3 0.000  3
4.3  6822    3 0.610  4
5.3  6823    3 0.190  5
6.3  6824    3 0.000  6
1.4  6819    4 0.000  1
2.4  6820    4 1.660  2
3.4  6821    4 0.000  3
4.4  6822    4 0.610  4
5.4  6823    4 0.190  5
6.4  6824    4 0.000  6
1.5  6819    5 0.000  1
2.5  6820    5 1.660  2
3.5  6821    5 0.000  3
4.5  6822    5 0.610  4
5.5  6823    5 0.190  5
6.5  6824    5 0.000  6
1.6  6819    6 0.000  1
2.6  6820    6 1.660  2
3.6  6821    6 0.000  3
4.6  6822    6 0.610  4
5.6  6823    6 0.190  5
6.6  6824    6 0.000  6
1.7  6819    7 0.000  1
2.7  6820    7 1.660  2
3.7  6821    7 0.000  3
4.7  6822    7 0.610  4
5.7  6823    7 0.190  5
6.7  6824    7 0.000  6
1.8  6819    8 0.000  1
2.8  6820    8 1.660  2
3.8  6821    8 0.000  3
4.8  6822    8 0.610  4
5.8  6823    8 0.190  5
6.8  6824    8 0.000  6
1.9  6819    9 0.000  1
2.9  6820    9 1.660  2
3.9  6821    9 0.000  3
4.9  6822    9 0.610  4
5.9  6823    9 0.190  5
6.9  6824    9 0.000  6
1.10 6819   10 0.000  1
2.10 6820   10 1.660  2
3.10 6821   10 0.000  3
4.10 6822   10 0.610  4
5.10 6823   10 0.190  5
6.10 6824   10 0.000  6
1.11 6819   11 0.000  1
2.11 6820   11 1.660  2
3.11 6821   11 0.000  3
4.11 6822   11 0.610  4
5.11 6823   11 0.190  5
6.11 6824   11 0.000  6
1.12 6819   12 0.000  1
2.12 6820   12 1.660  2
3.12 6821   12 0.000  3
4.12 6822   12 0.610  4
5.12 6823   12 0.190  5
6.12 6824   12 0.000  6
1.13 6819   13 0.000  1
2.13 6820   13 1.660  2
3.13 6821   13 0.000  3
4.13 6822   13 0.620  4
5.13 6823   13 0.250  5
6.13 6824   13 0.000  6