tercer sirven segundo quintiles que primer posicion percentiles para medidas los ejemplos deciles cuartiles cuartil como calcular r

sirven - ¿Cómo crear una columna con un cuartil?



quintiles y cuartiles (5)

Esto debería hacerlo:

tableOne <- within(tableOne, quartile <- as.integer(cut(salesPrice, quantile(salesPrice, probs=0:4/4), include.lowest=TRUE)))

...Algunos detalles:

La función within es ideal para calcular nuevas columnas. No tiene que referirse a las columnas como tableOne$salesPrice etc.

tableOne <- within(tableOne, quartile <- <<<some expression>>>)

La función de quantile calcula los cuantiles (o, en su caso, los cuartiles). 0:4/4 evalúa a c(0, 0.25, 0.50, 0.75, 1) .

Finalmente, la función de cut divide sus datos en esos cuartiles. Pero obtienes un factor con nombres extraños, por lo que a as.integer lo as.integer en grupos 1,2,3,4 .

Intente ?within etc. para aprender más sobre las funciones mencionadas aquí ...

Tengo una tabla llamada tableOne en R como esta:

idNum binaryVariable salePrice 2 1 55.56 4 0 88.33 15 0 4.45 87 1 35.77 ... ... ...

Me gustaría tomar los valores producidos a partir de: summary (tableOne $ salePrice) para crear cuatro cuartiles por salePrice. Luego me gustaría crear una columna tableOne $ quartile con el cuartil en el que se encuentra cada fila salePrice. Se vería así:

idNum binaryVariable salePrice quartile 2 1 55.56 3 4 0 88.33 4 15 0 4.45 1 87 1 35.77 2 ... ... ... ...

¿Alguna sugerencia?


La configuración de las labels=FALSE parámetros labels=FALSE en cut() devuelve los nombres de categoría como enteros. Ver ?cut

tableOne <- within(tableOne, quartile <- cut(salesPrice, quantile(salesPrice, probs=0:4/4), include.lowest=TRUE, labels=FALSE))


Puedes usar el siguiente script

tableOne$Quartile<-ifelse(tableOne$salesPrice<=quantile(tableOne$salesPrice,c(0.25)),1, ifelse(tableOne$salesPrice<=quantile(tableOne$salesPrice,c(0.5)),2, ifelse(tableOne$salesPrice<=quantile(tableOne$salesPrice,c(0.75)),3, ifelse(tableOne$salesPrice<=quantile(tableOne$salesPrice,c(1)),4,NA))))


Un enfoque de datos.

library(data.table) tableOne <- setDT(tableOne)[, quartile := cut(salesPrice, quantile(salesPrice, probs=0:4/4), include.lowest=TRUE, labels=FALSE)]


Usando el paquete cutr podemos hacer:

# devtools::install_github("moodymudskipper/cutr") library(cutr) df$quartile <- smart_cut(df$salePrice, 4, "g", output = "numeric") # idNum binaryVariable salePrice quartile # 1 2 1 55.56 3 # 2 4 0 88.33 4 # 3 15 0 4.45 1 # 4 87 1 35.77 2