¿Cómo agregar una columna basada en otras columnas en R DataFrame?

Se puede acceder a un marco de datos y modificarlo para almacenar nuevas inserciones y eliminaciones. El marco de datos puede sufrir mutaciones para aumentar sus dimensiones y almacenar más datos, así como los valores de filas y columnas, que pueden modificarse en función de otros valores de celda. 

En este artículo, veremos cómo agregar columnas basadas en otras columnas en DataFrame en lenguaje de programación R. Puede haber varios métodos para hacer lo mismo. Vamos a discutirlos en detalle.

Método 1: Usar la función transform()

El método transform() en R se usa para modificar los datos y realizar mutaciones. Transforma el primer argumento que se proporciona a la función. También se pueden agregar nuevas columnas como un segundo argumento de la función, donde puede ser una lista declarada al principio o inicializada durante los tiempos de ejecución usando la evaluación de expresión regular deseada. Podemos especificar el nombre de la columna recién agregada en el lado izquierdo del segundo argumento y declarar la expresión if-else a la derecha. La expresión if-else consta de tres partes,

  • La condición para probar los datos sobre
  • La segunda parte se evalúa cuando la condición no se cumple.
  • Tercero cuando no lo es.

El resultado tiene que estar explícitamente en el marco de datos original, para pertenecer a los resultados. 

Sintaxis:

transformar (marco de datos, x = c (..))

donde x es la columna recién agregada. 

Ejemplo:

R

# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
                        col2=c(8,9,5,10),
                        col3=c(0,2,3,5))
  
# printing original data frame
print("Original Data Frame")
print (data_frame)
  
# transforming data frame
# declare col4 where if col1 is equal 
# to col3, replace by col1+col3 value, 
# otherwise by col1+col2 value
data_frame <- transform(
  data_frame, col4= ifelse(col1==col3, col1+col2, col1+col3))
  
print("Modified Data Frame")
print(data_frame)

Producción

[1] "Original Data Frame"
 col1 col2 col3
1    1    8    0
2    2    9    2
3    3    5    3
4   -4   10    5
[1] "Modified Data Frame"
 col1 col2 col3 col4
1    1    8    0    1
2    2    9    2   11
3    3    5    3    8
4   -4   10    5    1

Método 2: Usar el método with()

El método with() en R se puede usar para evaluar expresiones y luego transformar los datos contenidos en un marco de datos. With es una función genérica que evalúa la expresión especificada como segundo argumento de la función en un entorno local construido a partir de datos, que se define en el primer argumento de la función. Se puede proporcionar cualquier expresión lógica como primer argumento del método y el valor en la nueva columna se reemplaza según el valor de verdad de la expresión después de evaluar la condición en las partes del argumento del método with. 

Sintaxis:

con (datos, expr, …)

Ejemplo:

R

# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
                        col2=c(8,9,5,10),
                        col3=c(0,2,3,5))
  
# printing original data frame
print("Original Data Frame")
print (data_frame)
  
# transforming data frame
# declare col4 where if col1 is equal
# to col3, replace by col1+col3 value,
# otherwise by col1+col2 value
data_frame$col4 <- with(
  data_frame, ifelse(col1+col3>5, col1+col3, col1+col2))
  
print("Modified Data Frame")
print(data_frame)

Producción

[1] "Original Data Frame"
 col1 col2 col3
1    1    8    0
2    2    9    2
3    3    5    3
4   -4   10    5
[1] "Modified Data Frame"
 col1 col2 col3 col4
1    1    8    0    9
2    2    9    2   11
3    3    5    3    6
4   -4   10    5    6

Método 3: Usar el método apply() 

apply() en R toma un marco de datos bien organizado o una array como entrada y da como salida un vector, una lista o una array. El método apply() se usa principalmente para evitar usos explícitos de construcciones de bucle. Cualquier función se puede especificar en el método apply(). El resultado tiene que estar explícitamente en el marco de datos original, para pertenecer a los resultados.  

Sintaxis: apply(X, margen, FUN)

Parámetro: 

  • x: un marco de datos o una array
  • margen:  tome un valor o rango entre 1 y 2 para definir dónde aplicar la función:
    • margin=1 : la manipulación se realiza en filas
    • margin=2 : la manipulación se realiza en columnas
    • margin=c(1,2) : la manipulación se realiza tanto en filas como en columnas
  • DIVERSIÓN: la función para aplicar donde se pueden aplicar funciones integradas como media, mediana, suma, mínimo, máximo e incluso funciones definidas por el usuario

Ejemplo:

R

# creating a data frame
data_frame = data.frame(col1=c(1,2,3,-4),
                        col2=c(8,9,5,10),
                        col3=c(0,2,3,5))
  
# printing original data frame
print("Original Data Frame")
print (data_frame)
  
# transforming data frame
# declare col4 where if col1 is
# equal to col3, replace by col1+col2
# value, otherwise by col3-col2 value
data_frame$col4 <- apply(
  data_frame, 1, FUN = function(x) if(mean(x[1])>1) x[2]+x[1] else x[3]-x[2])
  
print("Modified Data Frame")
print(data_frame)

Producción

[1] "Original Data Frame"
  col1 col2 col3
1    1    8    0
2    2    9    2
3    3    5    3
4   -4   10    5
[1] "Modified Data Frame"
  col1 col2 col3 col4
1    1    8    0   -8
2    2    9    2   11
3    3    5    3    8
4   -4   10    5   -5

Publicación traducida automáticamente

Artículo escrito por mallikagupta90 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 *