Comment puis-je bin données de taille 0.1 pour l'exemple suivant.
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
................
................
................
................
Cordialement
En ce qui concerne la solution @akrun, je publierais quelque chose d’utile dans la documentation ?cut
, au cas où:
Remarque
Au lieu de
table(cut(x, br))
,hist(x, br, plot = FALSE)
est plus efficace et consomme moins de mémoire.
Donc, dans le cas de beaucoup de données, je préférerais opter pour:
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
essayer
as.data.frame(table(cut(x, breaks=seq(0,1, by=0.1))))
La réponse d'Akrun était bonne mais ne m'a pas tout à fait amenée là pour le formatage.
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