¿Cómo encontrar la diferencia de valor en cada dos filas consecutivas en R DataFrame?

En este artículo, discutiremos cómo encontrar la diferencia de valor en cada dos filas consecutivas en DataFrame en lenguaje de programación R.

Método 1: Usar el método diff()

El método diff() en base R se usa para encontrar la diferencia entre todos los pares de filas consecutivas en el marco de datos R. Devuelve un vector con una longitud equivalente a la longitud de la columna de entrada: 1. Los elementos de la columna de entrada se evalúan desde el último elemento, donde cada elemento se reemplaza por el elemento en el índice n: elemento en (n-1). índice. No se devuelve ninguna salida para el primer elemento, ya que no tiene ningún elemento para inducir retraso con referencia. Este método es aplicable para columnas de datos enteros o numéricos. 

Sintaxis:

diferencia (vec, retraso = 1)

Parámetro: 

vec – Vector para calcular las diferencias de

lag – (Predeterminado: 1) El n-ésimo valor anterior para calcular las diferencias con

Ejemplo:

R

# creating a dataframe
data_frame <- data.frame(col1 = rep(c(1:3), each = 3),
                         col2 = letters[1:3],
                         col3 = c(1,4,1,2,3,2,1,2,2))
  
print ("Original DataFrame")
print (data_frame)
  
print ("Difference in col3 successive values")
diff(data_frame$col3)

Producción

[1] "Original DataFrame"
 col1 col2 col3
1    1    a    1
2    1    b    4
3    1    c    1
4    2    a    2
5    2    b    3
6    2    c    2
7    3    a    1
8    3    b    2
9    3    c    2
[1] "Difference in col3 successive values"
[1]  3 -3  1  1 -1 -1  1  0

 Método 2: Usar el paquete dplyr

El paquete “dply” en lenguaje de programación R se puede utilizar para realizar modificaciones o mejoras de datos. Proporciona una gran variedad de funciones para producir operaciones de manipulación y extracción de datos. 

El método mutate() se utiliza para la creación, eliminación y actualización de las columnas del marco de datos. Toma como argumento el nombre de la nueva columna y la función correspondiente a aplicar sobre ella. 

Sintaxis:

mutate (nuevo-nombre-col = nombre-col – lag(nombre-col))

El método lag() del paquete dplyr se usa para devolver el valor anterior de la columna especificada. Devuelve NA si no hay una fila anterior para esa columna. El nombre de columna personalizado se puede asignar a la columna de diferencia. Este método es diferente de los demás, ya que devuelve un superconjunto del marco de datos original como salida.

Ejemplo:

R

library("dplyr")
  
# creating a dataframe
data_frame <- data.frame(col1 = rep(c(1:3), each = 3),
                         col2 = letters[1:3],
                         col3 = c(1,4,1,2,2,2,1,2,2))
  
print ("Original DataFrame")
print (data_frame)
  
print ("Modified DataFrame")
# difference in rows of col3
data_frame %>%  mutate(col3_diff = col3 - lag(col3))

Producción

[1] "Original DataFrame" 
  col1 col2 col3 
1    1    a    1 
2    1    b    4 
3    1    c    1 
4    2    a    2 
5    2    b    2 
6    2    c    2 
7    3    a    1 
8    3    b    2 
9    3    c    2 
[1] "Modified DataFrame" 
  col1 col2 col3 col3_diff 
1    1    a    1        NA 
2    1    b    4         3 
3    1    c    1        -3 
4    2    a    2         1 
5    2    b    2         0 
6    2    c    2         0 
7    3    a    1        -1 
8    3    b    2         1 
9    3    c    2         0

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

Todas las columnas se pueden calcular para encontrar la diferencia de los valores en cada par de filas consecutivas del marco de datos. Se accede al marco de datos desde la última fila con cada fila un lugar antes. Y el valor se obtiene restando la fila en el índice n con la fila en el índice (n-1) ésimo . En caso de que la clase de la columna del marco de datos sea un carácter, se devuelve un valor faltante. 

La primera fila se elimina del marco de datos de salida. Los números de fila que comienzan con el número de fila 2 se devuelven como un marco de datos de salida. 

Ejemplo:

R

# creating a dataframe
data_frame <- data.frame(col1 = rep(c(1:3), each = 3),
                         col2 = letters[1:3],
                         col3 = c(1,4,1,2,2,2,1,2,2))
  
print ("Original DataFrame")
print (data_frame)
  
# calculating rows of dataframe
rows <- nrow(data_frame)
  
# difference in rows of entire dataframe
diff_frame <- data_frame[-1,] - data_frame[-rows,]
  
print ("Modified DataFrame")
print(diff_frame)

Producción

[1] "Original DataFrame"
 col1 col2 col3
1    1    a    1
2    1    b    4
3    1    c    1
4    2    a    2
5    2    b    2
6    2    c    2
7    3    a    1
8    3    b    2
9    3    c    2
[1] "Modified DataFrame"
 col1 col2 col3
 2    0   NA    3
 3    0   NA   -3
 4    1   NA    1
 5    0   NA    0
 6    0   NA    0
 7    1   NA   -1
 8    0   NA    1
 9    0   NA    0

Publicación traducida automáticamente

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