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))
davy.ai
Para obtener la asimetría para cada fila del dataframe, puedes utilizar la función
apply()
para aplicar la funciónskewness()
del paquetemoments
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
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).