2013-12-23 4 views

ответ

1

Вот некоторые случайные числа, реплицируется

x = sample(runif(10), 1000, TRUE) 

Найти уникальные (необязательно, округление до значащих цифр) значений, то найти индекс каждого x в таблице уникальных значений и табулирования этих

## x = signif(x, 6) 
ux = sort(unique(x)) 
idx = match(x, ux) 
n = tabulate(idx, nbins=length(ux)) 

наконец, обобщать результаты

df = data.frame(x=ux, n=n) 

Используйте резюме, чтобы увидеть все отсчеты

> head(df) 
      x n 
1 0.02832152 108 
2 0.04973473 90 
3 0.19770913 96 
4 0.31591234 103 
5 0.59334322 97 
6 0.64145901 98 

или определить значения с максимальными подсчетами

> df[df$n == max(df$n), , drop=FALSE] 
      x n 
10 0.9711141 127 
+0

спасибо, но мне нужно использовать nbins = макс(), потому что я пытаюсь определить количество большинства в вектор – user1723765

+0

@ user1723765 Я не понимаю, ответ табулирует индексы, а не значения. Возможно, вы хотите 'ux [who.max (n)]'. –

+0

+1 очень хорошая идея. Интересно, какое количество представлений с плавающей запятой (/ допуска) будет играть роль в получении уникальных значений ... Ex: 'x <- c (1.23456789123, 1.23456789124); unique (x) 'было бы неплохо иметь возможность иметь только одно значение здесь. – Arun

0

Значение nbins определяет количество ящиков, в которые помещаются цифры. Начиная с max(a) = 0.2849579, будут нулевые бункеры, поэтому ваш результат ожидается.

Также страница помощи для tabulate (вызывается с ?tabulate) говорит:

Если элементы «бин» являются числовыми, но не целые числа, они округляются до ближайшего целого числа.

В зависимости от вашей проблемы, вы можете сначала выполнить предварительный просмотр своих десятичных знаков, а затем применить tabulate. Или вы можете использовать hist или что-то в этом роде.

Смежные вопросы