次の例のサイズ0.1のデータをどのようにビニングできますか?.
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
................
................
................
................
よろしく
@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
_
試す
as.data.frame(table(cut(x, breaks=seq(0,1, by=0.1))))
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
@Colonel Beauvelの答えに基づいて、
ビン頻度テーブル関数。 (ヒストグラム表)。
binFreqTable <- function(x, bins) {
freq = hist(x, breaks=bins, include.lowest=TRUE, plot=FALSE)
ranges = paste(head(freq$breaks,-1), freq$breaks[-1], sep=" - ")
return(data.frame(range = ranges, frequency = freq$counts))
}
例:
> binFreqTable(x,c(0,.3,.6,1))
# range frequency
#1 0 - 0.3 6
#2 0.3 - 0.6 10
#3 0.6 - 1 4
> binFreqTable(x,5)
# range frequency
#1 0 - 0.2 3
#2 0.2 - 0.4 8
#3 0.4 - 0.6 5
#4 0.6 - 0.8 2
#5 0.8 - 1 2
> binFreqTable(x,seq(0,1,by=0.1))
# 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
#9 0.8 - 0.9 1
#10 0.9 - 1 1