R – Manipulación de tramas de datos

Data Frame es una entidad estructurada bidimensional que consta de filas y columnas. Consiste en vectores de igual longitud que filas. Los datos se almacenan en celdas a las que se accede especificando el conjunto de valores [fila, columna] correspondiente del marco de datos. La manipulación de marcos de datos implica modificar, extraer y reestructurar el contenido de un marco de datos. En este artículo, estudiaremos las diversas operaciones relacionadas con la manipulación de tramas de datos en R.

Cambiar el nombre de las columnas

Las columnas de un marco de datos se pueden renombrar para establecer nuevos nombres como etiquetas. Sin embargo, los cambios no se reflejan en el marco de datos original. No es necesario cambiar el nombre de todas las columnas. Las etiquetas de las columnas se pueden establecer en números complejos, valores numéricos o strings. La complejidad de tiempo requerida para cambiar el nombre de todas las columnas es O(c) donde c es el número de columnas en el marco de datos. Hay dos formas de cambiar el nombre de las columnas en un marco de datos:

  • rename()función del plyrpaquete
    La función rename() del plyrpaquete modifica los nombres de las columnas basándose en los nombres antiguos. No toma las posiciones de las columnas como argumentos para cambiar el nombre de las etiquetas de las columnas.
    Ejemplos:

    # R program to rename a Data Frame
      
    # Adding Package
    df <- library(plyr)
      
    # Creating a Data Frame
    df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
    print("Original Data Frame")
    print(df)
    print("Modified Data Frame")
      
    # Renaming Data Frame
    rename(df, c("row1"="one", "row2"="two", "row3"="three"))

    Producción:

    [1] "Original Data Frame"
      row1 row2 row3
    1    0    3    6
    2    1    4    7
    3    2    5    8
    [1] "Modified Data Frame"
      one two three
    1   0   3     6
    2   1   4     7
    3   2   5     8
     
    

    Se cambian las etiquetas de las columnas. En este caso, el resultado debe volver a asignarse al marco de datos para conservar los cambios.

  • Función incorporada de R: nombres (marco de datos) [col]
    Las etiquetas de las columnas se pueden renombrar usando el índice de la columna o el nombre de la columna para establecer los nuevos valores. Los cambios se reflejan en el marco de datos original. names()La función nos permite cambiar la etiqueta de una sola columna a la vez.

    Ejemplo 1:

    # R program to rename a Data Frame
      
    # Creating a Data Frame
    df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
    print("Original Data Frame")
    print(df)
    print("Modified Data Frame")
      
    # Renaming Data Frame
    names(df)[names(df)=="row3"]<-"three"
    print(df)

    Producción:

    [1] "Original Data Frame"
      row1 row2 row3
    1    0    3    6
    2    1    4    7
    3    2    5    8
    [1] "Modified Data Frame"
      row1 row2 three
    1    0    3     6
    2    1    4     7
    3    2    5     8
     
    

    Aquí, la etiqueta de la tercera columna se modifica de fila3 a tres. Los cambios se conservan en la base de datos original.

    Ejemplo 2:

    # R program to rename a Data Frame
      
    # Creating a Data Frame
    df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
    print("Original Data Frame")
    print(df)
    print("Modified Data Frame")
      
    # Renaming Data Frame
    names(df)[2]<-"two"
    print(df)

    Producción:

    [1] "Original Data Frame"
      row1 row2 row3
    1    0    3    6
    2    1    4    7
    3    2    5    8
    [1] "Modified Data Frame"
      row1 two row3
    1    0   3    6
    2    1   4    7
    3    2   5    8
    

    Aquí, la etiqueta de la segunda columna se cambia a dos desde la fila 2. Los cambios se conservan en la base de datos original.

Marco de datos en expansión

Los marcos de datos pueden expandirse aún más para agregar más columnas o contraerse para eliminar columnas.

  • Adición de columnas a un marco de datos
    Las columnas, en forma de vectores, se pueden agregar utilizando modos de indexación de marcos de datos. La nueva columna se agrega al final del marco de datos. Los valores en nuevas columnas pueden incluso ser una combinación de dos columnas existentes, por ejemplo, la suma o resta de dos columnas. También se puede agregar una columna que consta de valores NA. Los cambios se conservan en el marco de datos original. La complejidad de tiempo requerida para agregar una columna es O(n), donde n es el número de filas del marco de datos. Hay varias formas de agregar una nueva columna.
    Sintaxis:
    dataframe[[newcol]] <- vector 
    or 
    dataframe[newcol] <-vector 
    or 
    dataframe$newcol <-vector 

    Ejemplo:

    # R program to add column in a Data Frame
      
    # Creating a Data Frame
    df<-data.frame(col1 = 0:2, col2 = 3:5, col3 = 6:8)
    print ("Original Data Frame")
    print (df)
      
    # Adding empty column
    df[["col4"]]<-0
      
    # assigns a value NA to the data frame column 5
    df$"col5"<-NA
      
    # Updating Values of column added
    df[["col5"]] <- df[["col1"]] + df[["col2"]]
    print ("Modified Data Frame")
    print (df)

    Producción:

    [1] "Original Data Frame"
      col1 col2 col3
    1    0    3    6
    2    1    4    7
    3    2    5    8
    [1] "Modified Data Frame"
      col1 col2 col3 col4 col5
    1    0    3    6    0    3
    2    1    4    7    0    5
    3    2    5    8    0    7

    A todo el col4 se le asigna un valor de vector cero y se agrega al final en el marco de datos, primero. Luego se crea la quinta columna a la que se accede mediante df$col5 y se le asigna un valor de NA. Luego, los valores correspondientes se vuelven a calcular como una suma de los elementos de las columnas 1 y 2.

  • Eliminación de columnas de un marco de datos
    Las columnas de un marco de datos se pueden eliminar del marco de datos por sus nombres o valores de índice. Se pueden eliminar varias columnas juntas del marco de datos. El nombre de la columna o el índice deseado se puede asignar a un valor NULL y, en consecuencia, las columnas se desplazan. A continuación, las columnas se reducen según el número de eliminaciones. Los cambios se reflejan en el marco de datos original.

    Ejemplo 1:

    # R program to remove a column 
    # from a Data Frame
      
    # Creating a Data Frame
    df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
    print ("Original Data Frame")
    print (df)
      
    # Removing a Column
    df[["row2"]]<-NULL
    print(df)

    Producción:

    [1] "Original Data Frame"
      row1 row2 row3
    1    0    3    6
    2    1    4    7
    3    2    5    8
      row1 row3
    1    0    6
    2    1    7
    3    2    8
     
    

    fila2 se elimina del marco de datos. Las etiquetas de las columnas siguen siendo las mismas. df[row2]<-NULL también produciría un resultado similar.

    Ejemplo 2: eliminar las columnas mediante la indexación de enteros de las columnas

    # R program to remove a column 
    # from a Data Frame
      
    # Creating a Data Frame
    df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8, row4 = rep(5))
    print ("Original Data Frame")
    print (df)
      
    # Removing two columns
    df <- df [-c(1, 3)]
    print(df)

    Producción:

    [1] "Original Data Frame"
      row1 row2 row3 row4
    1    0    3    6    5
    2    1    4    7    5
    3    2    5    8    5
      row2 row4
    1    3    5
    2    4    5
    3    5    5
    

    Las columnas a excluir se especifican usando un vector -c(..índices de columna..). Aquí, las columnas 1 y 3 se eliminan del marco de datos, mientras que los cambios aún se conservan en el marco de datos original.

Subdividir un marco de datos

subset()Se puede usar la función, donde el argumento de selección implica que los nombres de las columnas se eliminen de un marco de datos. También se pueden especificar varios nombres de columnas convirtiéndolos en un vector c (col1, col2). Esta operación crea dos conjuntos separados del marco de datos, uno con las columnas excluidas y otro con las columnas incluidas. El número de columnas se reduce por el número de eliminaciones. Los cambios se reflejan en el marco de datos original.
Sintaxis:

subset(dataframe, select= - column)

Ejemplo:

# R program to remove a column 
# from a Data Frame
  
# Creating a Data Frame
df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
print ("Original Data Frame")
print (df)
  
# Creating a Subset
df<-subset(df, select = - c(row1, row2))
print("Modified Data Frame")
print(df)

Producción:

[1] "Original Data Frame"
  row1 row2 row3
1    0    3    6
2    1    4    7
3    2    5    8
[1] "Modified Data Frame"
  row3
1    6
2    7
3    8

Aquí, tanto la fila 1 como la fila 2 se eliminan del marco de datos. Por lo tanto, este subconjunto contiene solo una columna del conjunto original de columnas.

Reordenar columnas

Las columnas de un marco de datos se pueden reordenar especificando los nombres de las columnas o los índices de las columnas en el orden deseado. El marco de datos original sigue siendo el mismo. Los cambios deben volver a asignarse para conservar el orden. La complejidad de tiempo requerida para reordenar las columnas en el peor de los casos es O(m*n) donde todos los elementos deben cambiarse a una nueva posición, siendo m el número de filas y n el número de columnas.

Ejemplo 1:

# R program to remove a column 
# from a Data Frame
  
# Creating a Data Frame
df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
print("Original Data Frame")
print(df)
print("Modified Data Frame")
  
# Temporary modifying column order
# in a Data Frame
df[,c(2, 1, 3)]

Producción:

[1] "Original Data Frame"
  row1 row2 row3
1    0    3    6
2    1    4    7
3    2    5    8
[1] "Modified Data Frame"
  row2 row1 row3
1    3    0    6
2    4    1    7
3    5    2    8

Aquí, el orden deseado se especifica como índices de columna. Por lo tanto, las columnas se reordenan en índices de columna [2, 1, 3]. No se realizan cambios en el marco de datos original.

Ejemplo 2:

# R program to remove a column 
# from a Data Frame
  
# Creating a Data Frame
df<-data.frame(row1 = 0:2, row2 = 3:5, row3 = 6:8)
print("Original Data Frame")
print(df)
print("Modified Data Frame")
  
# Permanently modifying column order
# in a Data Frame
df <- df[c(2, 1, 3)]
print(df)

Producción:

[1] "Original Data Frame"
  row1 row2 row3
1    0    3    6
2    1    4    7
3    2    5    8
[1] "Modified Data Frame"
  row2 row1 row3
1    3    0    6
2    4    1    7
3    5    2    8

Aquí, el orden deseado se especifica como nombres de columna. Los cambios se realizan en el marco de datos original.

Publicación traducida automáticamente

Artículo escrito por yashchuahan y traducido por Barcelona Geeks. The original can be accessed here. Licence: CCBY-SA

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *