domingo, 23 de diciembre de 2012

R - Añadir una columna a una tabla y transformar el contenido:


Este ejemplo es práctico y conciso. Creado a partir de una tabla de datos inventada:

> Datos
        X   Color Altura Coordenadax Coordenaday Padre Numero.de.hijos
1    Paco    Azul    1,8   1234253,5  89730495,4    Si               1
2    pepe   Verde    1,4   1234253,6  89730496,4   No                2
3 Sicario   Verde    1,6   1234253,7  89730497,4    Si               3
4   Edgar   Negro    1,2   1234253,8  89730498,4    Si               4
5  London Naranja      2   1234253,9  89730499,4    Si               5

Para crear una columna en última posición debemos crear un vector que vaya acorde a las características de la tabla. Lo llamaremos "UltimaFila":

> UltimaFila=vector(mode='numeric', length=5)
> UltimaFila
[1] 0 0 0 0 0 

Ahora renombramos la tabla e insertamos la columna al final a partir del vector creado:

> NuevosDatos = data.frame(Datos, UltimaFila)
> NuevosDatos
        X   Color Altura Coordenadax Coordenaday Padre Numero.de.hijos UltimaFila
1    Paco    Azul    1,8   1234253,5  89730495,4    Si               1          0
2    pepe   Verde    1,4   1234253,6  89730496,4   No                2          0
3 Sicario   Verde    1,6   1234253,7  89730497,4    Si               3          0
4   Edgar   Negro    1,2   1234253,8  89730498,4    Si               4          0
5  London Naranja      2   1234253,9  89730499,4    Si               5          0

Antes de modificar los valores de "miVector" es interesante simplificar los nombres de las variables:


> colnames(NuevosDatos)= c('Persona','Color','Altura','Coor X','Coor Y','Padre','Hijos','Hijos*2')
> NuevosDatos
  Persona   Color Altura    Coor X     Coor Y Padre Hijos Hijos*2
1    Paco    Azul    1,8 1234253,5 89730495,4    Si     1       0
2    pepe   Verde    1,4 1234253,6 89730496,4   No      2       0
3 Sicario   Verde    1,6 1234253,7 89730497,4    Si     3       0
4   Edgar   Negro    1,2 1234253,8 89730498,4    Si     4       0
5  London Naranja      2 1234253,9 89730499,4    Si     5       0

Para terminar podemos modificar los valores de la última columna a partir de otros que ya se encuentran en la tabla. Es muy importante en este caso colocar bien las comillas para definir bien la  columna ('Hijos*2') o la fórmula que vamos a aplicar (Hijos*2):


> NuevosDatos$'Hijos*2'=NuevosDatos$Hijos*2
> NuevosDatos
  Persona   Color Altura    Coor X     Coor Y Padre Hijos Hijos*2
1    Paco    Azul    1,8 1234253,5 89730495,4    Si     1       2
2    pepe   Verde    1,4 1234253,6 89730496,4   No      2       4
3 Sicario   Verde    1,6 1234253,7 89730497,4    Si     3       6
4   Edgar   Negro    1,2 1234253,8 89730498,4    Si     4       8
5  London Naranja      2 1234253,9 89730499,4    Si     5      10

No hay comentarios: