2016-06-24 8 views
1

Ich habe einen Vektor von 1000 Wert, dann mache ich ein Histogramm mit 100 Bins. Ich möchte einen Vektor = (Wert, Freq) mit dem Wert machen, der der einzelne Wert ist (so werde ich 1000 von ihnen haben) mit der freq = die Zählung der Werte in der Tonne, in die der bestimmte Wert fällt.Kombinieren Sie den einzelnen Wert mit der Anzahl für jeden Histogramm-Bin

Hoffentlich kann klares Problem:

data <- c(6.429229, 9.300965, 11.073744, 6.527263, 8.425178, 
      6.821384, 6.515991, 9.131452, 6.313888, 8.866572) 
Myhist <- hist(data,2) 
Myhist$counts 
# 5 4 1 

# c(5,4,1,5,4,5,5,4,5,4) 
MyDF <- cbind(data,c(5,4,1,5,4,5,5,4,5,4)) 
# Result I want: 

# [1,] 6.429229 5 
# [2,] 9.300965 4 
# [3,] 11.073744 1 
# [4,] 6.527263 5 
# [5,] 8.425178 4 
# [6,] 6.821384 5 
# [7,] 6.515991 5 
# [8,] 9.131452 4 
# [9,] 6.313888 5 
#[10,] 8.866572 4 
+2

ich nicht ganz folgen. Können Sie ein [reproduzierbares Beispiel] (http://stackoverflow.com/q/5963269/1217536) für Leute zur Verfügung stellen? Wenn Sie 1000 eindeutige Verluste haben, dann haben Sie 1k Bins benötigt und die Anzahl der beobachteten Verluste innerhalb jedes Bins wird 1. – gung

+1

Können Sie uns ein Beispiel für die Eingabe und die erwartete Ausgabe, natürlich die Größe der Eingabe (z 10 Verluste, 5 Bins) – digEmAll

+0

Hey sorry Ich habe ein einfaches Beispiel hinzugefügt hoffe das macht es klarer – Ashton

Antwort

0

Basierend auf Ihrem Beispiel zu raten Ich bin, was Sie wollen, ist die Anzahl der Werte zu kennen (einschließlich dem Wertes in Frage), die in die gleichen Behälter fallen in einem Histogramm. Sie scheinen auch die Histogramm-Pausen angegeben zu haben.

data <- c(6.429229, 9.300965, 11.073744, 6.527263, 8.425178, 
      6.821384, 6.515991, 9.131452, 6.313888, 8.866572) 

get.num.in.bin <- function(data, hist.breaks=2){ 
    Myhist <- hist(data, breaks=hist.breaks, plot=FALSE) 
    cats  <- as.numeric(cut(data, breaks=Myhist$breaks, labels=1:3)) 
    counts <- Myhist$counts[cats] 
    new.data <- data.frame(data=data, num.in.bin=counts) 
    return(new.data) 
} 
get.num.in.bin(data) 
#   data num.in.bin 
# 1 6.429229   5 
# 2 9.300965   4 
# 3 11.073744   1 
# 4 6.527263   5 
# 5 8.425178   4 
# 6 6.821384   5 
# 7 6.515991   5 
# 8 9.131452   4 
# 9 6.313888   5 
# 10 8.866572   4