tabla - poligono de frecuencia en r
Cómo generar una tabla de frecuencia en R con frecuencia acumulativa y frecuencia relativa (5)
¡Usted está cerca! Hay algunas funciones que lo harán fácil para usted, como cumsum()
y prop.table()
. Así es como probablemente pondría esto junto. Hago algunos datos al azar, pero el punto es el mismo:
#Fake data
x <- sample(10:20, 44, TRUE)
#Your code
factorx <- factor(cut(x, breaks=nclass.Sturges(x)))
#Tabulate and turn into data.frame
xout <- as.data.frame(table(factorx))
#Add cumFreq and proportions
xout <- transform(xout, cumFreq = cumsum(Freq), relative = prop.table(Freq))
#-----
factorx Freq cumFreq relative
1 (9.99,11.4] 11 11 0.25000000
2 (11.4,12.9] 3 14 0.06818182
3 (12.9,14.3] 11 25 0.25000000
4 (14.3,15.7] 2 27 0.04545455
5 (15.7,17.1] 6 33 0.13636364
6 (17.1,18.6] 3 36 0.06818182
7 (18.6,20] 8 44 0.18181818
Soy nuevo en R. Necesito generar una tabla de frecuencia simple (como en los libros) con frecuencia acumulativa y relativa.
Así que quiero generar a partir de algunos datos simples como
> x
[1] 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10 12 17 17 17 17 17 17 17 17 16 16 16 16 16 18 18 18 10
[36] 12 15 19 20 22 20 19 19 19
una mesa como
frequency cumulative relative
(9.99,11.7] 2 2 0.04545455
(11.7,13.4] 2 4 0.04545455
(13.4,15.1] 1 5 0.02272727
(15.1,16.9] 10 15 0.22727273
(16.9,18.6] 22 37 0.50000000
(18.6,20.3] 6 43 0.13636364
(20.3,22] 1 44 0.02272727
Sé que debería ser simple, pero no sé cómo.
Obtuve algunos resultados usando este código:
factorx <- factor(cut(x, breaks=nclass.Sturges(x)))
as.matrix(table(factorx))
La table
funciones básicas, cumsum
y prop.table
deben prop.table
allí:
cbind( Freq=table(x), Cumul=cumsum(table(x)), relative=prop.table(table(x)))
Freq Cumul relative
10 2 2 0.04545455
12 2 4 0.04545455
15 1 5 0.02272727
16 10 15 0.22727273
17 16 31 0.36363636
18 6 37 0.13636364
19 4 41 0.09090909
20 2 43 0.04545455
22 1 44 0.02272727
Con cbind y el nombramiento de las columnas a su gusto, esto debería ser bastante fácil para usted en el futuro. La salida de la función de tabla es una matriz, por lo que este resultado también es una matriz. Si esto se hiciera en algo grande, sería más eficiente hacerlo:
tbl <- table(x)
cbind( Freq=tbl, Cumul=cumsum(tbl), relative=prop.table(tbl))
Mi sugerencia es revisar el paquete de agricolae ... échale un vistazo:
library(agricolae)
weight<-c( 68, 53, 69.5, 55, 71, 63, 76.5, 65.5, 69, 75, 76, 57, 70.5,
+ 71.5, 56, 81.5, 69, 59, 67.5, 61, 68, 59.5, 56.5, 73,
+ 61, 72.5, 71.5, 59.5, 74.5, 63)
h1<- graph.freq(weight,col="yellow",frequency=1,las=2,xlab="h1")
print(summary(h1),row.names=FALSE)
Otra posibilidad más:
library(SciencesPo)
x = c(sample(10:20, 50, TRUE))
freq(x)
Si está buscando algo preempaquetado, considere la función freq()
del paquete descr
.
library(descr)
x = c(sample(10:20, 44, TRUE))
freq(x, plot = FALSE)
O para obtener porcentajes acumulativos, use la función ordered()
freq(ordered(x), plot = FALSE)
Para agregar una columna de "frecuencias acumulativas":
tab = as.data.frame(freq(ordered(x), plot = FALSE))
CumFreq = cumsum(tab[-dim(tab)[1],]$Frequency)
tab$CumFreq = c(CumFreq, NA)
tab
Si a sus datos les faltan valores, se agregará una columna de porcentaje válido a la tabla.
x = c(sample(10:20, 44, TRUE), NA, NA)
freq(ordered(x), plot = FALSE)