¿Cómo encontrar la proporción de valores de fila en el marco de datos R?

La proporción del valor de fila en un marco de datos es equivalente al valor de celda dividido por la suma de los valores de celda que pertenecen a toda esa fila. La suma de todos los valores de proporción de fila en un marco de datos es equivalente a 1. En este artículo, veremos cómo encontrar la proporción de valores de fila en un marco de datos en el lenguaje de programación R.

Ejemplo 1: Se realiza una iteración sobre la array utilizando dos bucles for. Calculamos la suma de filas para cada fila mientras realizamos la iteración de filas y luego dividimos el valor de la celda por la suma de filas. Este valor se reasigna al valor de celda original del marco de datos. La complejidad de tiempo requerida para realizar esto es equivalente a O(n * m), donde n es el no. de filas y m es el número de columnas en el marco de datos. 

El siguiente fragmento de código ilustra la aplicación de este enfoque: 

R

# declaring a data frame in R
data_frame = data.frame(C1= c(0,1,2,3),
                        C2 = c(1:4),
                        C3 = c(9:12))
  
print("Original data frame")
print(data_frame)
  
# looping over the rows of data frame
for (i in 1:nrow(data_frame)){
    
    # looping over the columns of data frame
    for (j in 1:ncol(data_frame)){
        
        # computing sum of row i 
        row_sum <- sum(data_frame[i,])
        
        # calculating row proportion of the cell 
        # value
        data_frame[i,j] <- data_frame[i,j]/row_sum
    }
}
  
# printing modified data frame
print ("Modified data frame")
print (data_frame)

Producción:

[1] "Original data frame"
 C1 C2 C3
1  0  1  9
2  1  2 10
3  2  3 11
4  3  4 12
[1] "Modified data frame"
         C1        C2        C3
1 0.00000000 0.1000000 0.9890110
2 0.07692308 0.1656051 0.9763215
3 0.12500000 0.2123894 0.9702410
4 0.15789474 0.2475570 0.9673166

Ejemplo 2: Uso del método rowSums()

Este método recorre el marco de datos y calcula iterativamente la suma de cada fila en el marco de datos. Para la aplicación de este método, la trama de datos de entrada debe ser de naturaleza numérica. Sin embargo, este método también es aplicable para números complejos. La siguiente sintaxis en R se puede usar para calcular la proporción de fila de valores de celda, donde la salida debe almacenarse explícitamente en un nuevo marco de datos:

Sintaxis: mdf<-df/rowSums(df)

Argumentos: df: el marco de datos para calcular la proporción de valores de fila

Código:

R

# declaring a data frame in R
data_frame = data.frame(C1= c(0,1,2,3),
                        C2 = c(2,3,2,3),
                        C3 = c(9:12))
  
print("Original data frame")
print(data_frame)
  
# divides each cell value with corresponding
# row sum value
data_frame<-data_frame/rowSums(data_frame)
  
# printing modified data frame
print ("Modified data frame")
print (data_frame)

Producción:

[1] "Original data frame"
 C1 C2 C3
1  0  2  9
2  1  3 10
3  2  2 11
4  3  3 12
[1] "Modified data frame"
         C1        C2        C3
1 0.00000000 0.1818182 0.8181818
2 0.07142857 0.2142857 0.7142857
3 0.13333333 0.1333333 0.7333333
4 0.16666667 0.1666667 0.6666667

El siguiente fragmento de código ilustra el cálculo de la proporción de filas en el marco de datos de los números complejos: 

R

# declaring a data frame in R
data_frame = data.frame(C1= c(1+2i,3i,6+5i,1+2i),
                        C2 = c(2,3,2,3),
                        C3 = c(9:12))
  
print("Original data frame")
print(data_frame)
  
# divides each cell value with corresponding row sum value
data_frame<-data_frame/rowSums(data_frame)
  
# printing modified data frame
print ("Modified data frame")
print (data_frame)

Producción

[1] "Original data frame"
   C1 C2 C3
1 1+2i  2  9
2 0+3i  3 10
3 6+5i  2 11
4 1+2i  3 12
[1] "Modified data frame"
                   C1                    C2                   C3
1 0.1081081+0.1486486i 0.1621622-0.02702703i 0.7297297-0.1216216i
2 0.0505618+0.2191011i 0.2191011-0.05056180i 0.7303371-0.1685393i
3 0.3601036+0.1683938i 0.0984456-0.02590674i 0.5414508-0.1424870i
4 0.0769231+0.1153846i 0.1846154-0.02307692i 0.7384615-0.0923077i

Todos los valores se evalúan en forma de un número entero + 0i y se devuelve el valor de proporción de fila correspondiente. 

Publicación traducida automáticamente

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