2015-01-08 2 views
8

Как я могу данные bin размером 0,1 для следующего примера.Как создать таблицу частот битов в R?

x<-c(0.01,0.34,0.45,0.67,0.89,0.12,0.34,0.45,0.23,0.45,0.34,0.32,0.45,0.21,0.55,0.66,0.99,0.23,.012,0.34) 
range  frequency 
0.1-0.2  a 
0.2-0.3  b 
0.3-0.4  c 
................ 
................ 
................ 
................ 

С уважением

ответ

7

Что касается @akrun решение, я бы разместить что-то ПОЛЕЗНЫЕ из документации ?cut, в случае:

Примечание

Вместо table(cut(x, br)), hist(x, br, plot = FALSE) является более эффективным и менее голодающим голосом.

Таким образом, в случае больших объемов данных, я бы предпочел выбрать:

br = seq(0,1,by=0.1) 

ranges = paste(head(br,-1), br[-1], sep=" - ") 
freq = hist(x, breaks=br, include.lowest=TRUE, plot=FALSE) 

data.frame(range = ranges, frequency = freq$counts) 

#  range frequency 
#1 0 - 0.1   2 
#2 0.1 - 0.2   1 
#3 0.2 - 0.3   3 
#4 0.3 - 0.4   5 
#5 0.4 - 0.5   4 
#6 0.5 - 0.6   1 
#7 0.6 - 0.7   2 
#8 0.7 - 0.8   0 
#10 0.9 - 1   1 
+0

частота = истор (х, разрывы = ш, include.lowest = TRUE, сюжет = FALSE) # перерыв = уш должны быть перерывы = уш –

+0

прямо с поправками! –

5

попробовать

as.data.frame(table(cut(x, breaks=seq(0,1, by=0.1)))) 
0

ответ Akrun был хорош, но не совсем понял меня есть для форматирования.

x<-c(0.01,0.34,0.45,0.67,0.89,0.12,0.34,0.45,0.23,0.45,0.34,0.32,0.45,0.21,0.55,0.66,0.99,0.23,.012,0.34) 

cuts<-cut(x, breaks=seq(0,1, by=0.1)) 
counts<-c(t(table(cuts))) 

#Here's the important part for me, formatting the cuts for display in the data frame: 

labs <- levels(cuts) 
lable_matrix<-cbind(lower = as.numeric(sub("\\((.+),.*", "\\1", labs)), 
    upper = as.numeric(sub("[^,]*,([^]]*)\\]", "\\1", labs))) 

cut_frame<-data.frame(lable_matrix,counts) 

# lower upper counts 
#1 0.0 0.1  2 
#2 0.1 0.2  1 
#3 0.2 0.3  3 
#4 0.3 0.4  5 
#5 0.4 0.5  4 
#6 0.5 0.6  1 
#7 0.6 0.7  2 
#8 0.7 0.8  0 
#9 0.8 0.9  1 
#10 0.9 1.0  1 
Смежные вопросы