Digamos que eu tenho:
v = rep(c(1,2, 2, 2), 25)
Agora, quero contar o número de vezes que cada valor exclusivo aparece. unique(v)
retorna quais são os valores únicos, mas não quantos são.
> unique(v)
[1] 1 2
Eu quero algo que me dê
length(v[v==1])
[1] 25
length(v[v==2])
[1] 75
mas como um one-liner mais geral :) Algo próximo (mas não muito) assim:
#<doesn't work right> length(v[v==unique(v)])
hist
.table
parece um pouco mais lento quehist
. Eu quero saber porque. Alguém pode confirmar?order()
nos resultados. iex <- as.data.frame(table(dummyData)); x[order(x$Freq, decreasing = TRUE), ]
Se você tiver vários fatores (= um quadro de dados multidimensional), poderá usar o
dplyr
pacote para contar valores exclusivos em cada combinação de fatores:Ele usa o operador
%>%
de canal para encadear chamadas de método no quadro de dadosdata
.fonte
É uma abordagem de uma linha usando
aggregate
.fonte
A função table () é um bom caminho, como sugeriu Chase . Se você estiver analisando um grande conjunto de dados, uma maneira alternativa é usar a função .N no pacote de dados.
Certifique-se de instalar o pacote da tabela de dados
Código:
fonte
Para obter um vetor inteiro não dimensionado que contenha a contagem de valores exclusivos, use
c()
.Isso pode ser útil se você precisar alimentar as contagens de valores exclusivos em outra função e for mais curto e mais idiomático do que o
t(as.data.frame(table(dummyData))[,2]
postado em um comentário à resposta de Chase. Agradeço a Ricardo Saporta, que me indicou isso aqui .fonte
Isso funciona para mim. Pegue seu vetor
v
length(summary(as.factor(v),maxsum=50000))
Comentário: defina maxsum como grande o suficiente para capturar o número de valores exclusivos
ou com o
magrittr
pacotev %>% as.factor %>% summary(maxsum=50000) %>% length
fonte
Se você precisar ter o número de valores exclusivos como uma coluna adicional no quadro de dados que contém seus valores (uma coluna que pode representar o tamanho da amostra, por exemplo), o plyr fornece uma maneira elegante:
fonte
ddply(data_frame, .(v), count)
. Também vale a pena explicitar que você precisa de umalibrary("plyr")
chamada para fazer oddply
trabalho.transform
vez demutate
quando usarplyr
.Também tornar os valores categóricos e os chamados
summary()
funcionaria.fonte
Você pode tentar também um
tidyverse
fonte
Se você deseja executar um único em um data.frame (por exemplo, train.data) e também obter as contagens (que podem ser usadas como peso nos classificadores), faça o seguinte:
fonte
length (unique (df $ col)) é a maneira mais simples de ver.
fonte
fonte