Digamos que tengo:
v = rep(c(1,2, 2, 2), 25)
Ahora, quiero contar la cantidad de veces que aparece cada valor único. unique(v)
devuelve cuáles son los valores únicos, pero no cuántos son.
> unique(v)
[1] 1 2
Quiero algo que me de
length(v[v==1])
[1] 25
length(v[v==2])
[1] 75
pero como una frase más general :) Algo cercano (pero no del todo) como este:
#<doesn't work right> length(v[v==unique(v)])
hist
.table
parece bastante más lento quehist
. Me pregunto porque. ¿Alguien puede confirmar?order()
en los resultados. es decirx <- as.data.frame(table(dummyData)); x[order(x$Freq, decreasing = TRUE), ]
Si tiene múltiples factores (= un marco de datos multidimensional), puede usar el
dplyr
paquete para contar valores únicos en cada combinación de factores:Utiliza el operador de tubería
%>%
para encadenar llamadas de método en el marco de datosdata
.fuente
Es un enfoque de una línea mediante el uso
aggregate
.fuente
La función table () es una buena opción, como sugirió Chase . Si está analizando un conjunto de datos grande, una forma alternativa es usar la función .N en el paquete de tabla de datos.
Asegúrese de haber instalado el paquete de la tabla de datos
Código:
fuente
Para obtener un vector entero no acotado que contiene el recuento de valores únicos, use
c()
.Esto puede ser útil si necesita alimentar los recuentos de valores únicos en otra función, y es más corto y más idiomático que el
t(as.data.frame(table(dummyData))[,2]
publicado en un comentario a la respuesta de Chase. Gracias a Ricardo Saporta que me lo señaló aquí .fuente
Esto funciona para mi. Toma tu vector
v
length(summary(as.factor(v),maxsum=50000))
Comentario: establezca maxsum para que sea lo suficientemente grande como para capturar la cantidad de valores únicos
o con el
magrittr
paquetev %>% as.factor %>% summary(maxsum=50000) %>% length
fuente
Si necesita tener el número de valores únicos como una columna adicional en el marco de datos que contiene sus valores (una columna que puede representar el tamaño de la muestra, por ejemplo), plyr proporciona una forma ordenada:
fuente
ddply(data_frame, .(v), count)
. También vale la pena hacer explícito que necesita unalibrary("plyr")
llamada para queddply
funcione.transform
lugar demutate
usarloplyr
.También hacer que los valores sean categóricos y llamar
summary()
funcionaría.fuente
Puedes probar también un
tidyverse
fuente
Si desea ejecutar un único en un data.frame (por ejemplo, train.data), y también obtener los recuentos (que se pueden usar como el peso en los clasificadores), puede hacer lo siguiente:
fuente
length (unique (df $ col)) es la forma más simple que puedo ver.
fuente
fuente