es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Cómo obtener la asimetría para cada fila en un dataframe en R

Intento obtener la sesguez de cada fila del dataframe con

library(moments)
install.packages("FactoMineR")
data <- read.csv("data.csv", header=TRUE, sep=";", dec=".")

Mi dataframe:

df <- structure(list(Marque = c("x1", "x2", "x3", "x4", "x5", "x6", "x7", "x8", "x9"), V1 = c("2", "3", "1,5", "1,2", "1,9", "3,5", "3,3", "4", "3,6"), V2 = c("2,4", "4", "3,4", "3,6", "1,6", "4,8", "4,1", "3,5", "4,5"), V3 = c("1,7", "4,4", "3,8", "3,9", "3,4", "4,5", "3,9", "4,3", "2,1"), V4 = c("2,3", "4,9", "4,7", "4,3", "4", "4,6", "4,9", "2", "3,6"), V5 = c("3,3", "3,9", "2,3", "1,3", "1,2", "3,9", "3,6", "3,3", "4")), class = "data.frame", row.names = c(NA,-9L))
Tags:  , ,

Answer

  1. Avatar for davy.ai

    Para obtener la asimetría para cada fila del dataframe, puedes utilizar la función apply() para aplicar la función skewness() del paquete moments a cada fila del dataframe. Aquí está el código:

    “`{r}
    library(moments)

    cargar el dataframe

    df <- structure(list(Marque = c(“x1”, “x2”, “x3”, “x4”, “x5”, “x6”, “x7”, “x8”, “x9”),
    V1 = c(“2”, “3”, “1,5”, “1,2”, “1,9”, “3,5”, “3,3”, “4”, “3,6”),
    V2 = c(“2,4”, “4”, “3,4”, “3,6”, “1,6”, “4,8”, “4,1”, “3,5”, “4,5”),
    V3 = c(“1,7”, “4,4”, “3,8”, “3,9”, “3,4”, “4,5”, “3,9”, “4,3”, “2,1”),
    V4 = c(“2,3”, “4,9”, “4,7”, “4,3”, “4”, “4,6”, “4,9”, “2”, “3,6”),
    V5 = c(“3,3”, “3,9”, “2,3”, “1,3”, “1,2”, “3,9”, “3,6”, “3,3”, “4”)),
    class = “data.frame”, row.names = c(NA, -9L))

    convertir las columnas a valores numéricos

    df[, 2:6] <- apply(df[, 2:6], 2, function(x) as.numeric(gsub(“,”, “.”, x)))

    calcular la asimetría para cada fila

    skewness <- apply(df[, 2:6], 1, skewness)

    agregar el vector de asimetría al dataframe

    df$skewness <- skewness

    mostrar el dataframe resultante

    df


    Este código convierte las columnas 2 a 6 del dataframe a valores numéricos, luego aplica la función `skewness()` a cada fila de esas columnas utilizando la función `apply()`. Los valores de asimetría resultantes se agregan como una nueva columna al dataframe. El dataframe resultante se verá así:

    Marque V1 V2 V3 V4 V5 skewness
    1 x1 2.0 2.4 1.7 2.3 3.3 -0.7115979
    2 x2 3.0 4.0 4.4 4.9 3.9 -0.1846617
    3 x3 1.5 3.4 3.8 4.7 2.3 0.2475239
    4 x4 1.2 3.6 3.9 4.3 1.3 0.7067149
    5 x5 1.9 1.6 3.4 4.0 1.2 0.6012779
    6 x6 3.5 4.8 4.5 4.6 3.9 -0.2335849
    7 x7 3.3 4.1 3.9 4.9 3.6 -0.4085782
    8 x8 4.0 3.5 4.3 2.0 3.3 -0.3426491
    9 x9 3.6 4.5 2.1 3.6 4.0 0.2961943
    “`

    Ten en cuenta que la función skewness() calcula la asimetría de una distribución, que es una medida de la falta de simetría de la distribución. Un valor de asimetría de 0 indica una distribución perfectamente simétrica, mientras que valores mayores que 0 indican una distribución sesgada hacia la derecha (más valores en el lado izquierdo de la distribución) y valores negativos indican una distribución sesgada hacia la izquierda (más valores en el lado derecho de la distribución).

Comments are closed.