varias superponer studio lineas graficos graficas r count frequency

superponer - ¿Cómo contar cuántos valores por nivel en un factor dado?



superponer graficas en r (7)

Tengo un data.frame mydf con aproximadamente 2500 filas. Estas filas corresponden a 69 clases de objetos en la columna 1 mydf$V1 , y quiero contar cuántas filas por clase de objeto tengo. Puedo obtener un factor de estas clases con:

objectclasses = unique(factor(mydf$V1, exclude="1"));

¿Cuál es la forma R concisa de contar las filas por clase de objeto? Si este fuera cualquier otro lenguaje, estaría atravesando una matriz con un bucle y manteniendo la cuenta, pero soy nuevo en la programación de R y estoy tratando de aprovechar las operaciones vectorizadas de R.


Aquí hay 2 maneras de hacerlo:

set.seed(1) tt <- sample(letters,100,rep=TRUE) ## using table table(tt) tt a b c d e f g h i j k l m n o p q r s t u v w x y z 2 3 3 3 2 4 6 1 6 5 6 4 7 2 2 2 5 4 5 3 8 4 5 4 3 1 ## using tapply tapply(tt,tt,length) a b c d e f g h i j k l m n o p q r s t u v w x y z 2 3 3 3 2 4 6 1 6 5 6 4 7 2 2 2 5 4 5 3 8 4 5 4 3 1


O usando la biblioteca dplyr :

library(dplyr) set.seed(1) dat <- data.frame(ID = sample(letters,100,rep=TRUE)) dat %>% group_by(ID) %>% summarise(no_rows = length(ID))

Tenga en cuenta el uso de %>% , que es similar al uso de tuberías en bash. Efectivamente, el código anterior canaliza los datos en group_by , y el resultado de esa operación se canaliza en summarise .

El resultado es:

Source: local data frame [26 x 2] ID no_rows 1 a 2 2 b 3 3 c 3 4 d 3 5 e 2 6 f 4 7 g 6 8 h 1 9 i 6 10 j 5 11 k 6 12 l 4 13 m 7 14 n 2 15 o 2 16 p 2 17 q 5 18 r 4 19 s 5 20 t 3 21 u 8 22 v 4 23 w 5 24 x 4 25 y 3 26 z 1

Vea la introducción de dplyr para más contexto y la documentación para detalles sobre las funciones individuales.


Podemos usar el summary en la columna de factores:

summary(myDF$factorColumn)


Un enfoque más sería aplicar la función n () que cuenta el número de observaciones.

library(dplyr) library(magrittr) data %>% group_by(columnName) %>% summarise(Count = n())


Usando el paquete plyr :

library(plyr) count(mydf$V1)

Le devolverá una frecuencia de cada valor.


Utilice el paquete plyr con lapply para obtener frecuencias para cada valor (nivel) y cada variable (factor) en su marco de datos.

library(plyr) lapply(df, count)


Utilizando data.table

library(data.table) setDT(dat)[, .N, keyby=ID] #(Using @Paul Hiemstra''s `dat`)

O utilizando dplyr 0.3

res <- count(dat, ID) head(res) #Source: local data frame [6 x 2] # ID n #1 a 2 #2 b 3 #3 c 3 #4 d 3 #5 e 2 #6 f 4

O

dat %>% group_by(ID) %>% tally()

O

dat %>% group_by(ID) %>% summarise(n=n())