Da Sie die Formel bereits kennen, sollte es einfach genug sein, eine Funktion zu erstellen, um die Berechnung für Sie durchzuführen.
Hier habe ich eine grundlegende Funktion für den Anfang erstellt. Die Funktion benötigt vier Argumente:
-
frequencies
: Ein Vektor von Häufigkeiten ("Nummer" in Ihrem ersten Beispiel)
-
intervals
: Eine 2-zeilige matrix
mit der gleichen Anzahl von Spalten wie die Länge der Frequenzen, wobei die erste Zeile die untere Klassengrenze und die zweite Zeile die obere Klassengrenze ist. Alternativ kann " intervals
" eine Spalte in Ihrem data.frame
sein, und Sie können sep
(und möglicherweise trim
) angeben, damit die Funktion automatisch die erforderliche Matrix für Sie erstellt.
-
sep
: Das Trennzeichen in der Spalte " intervals
" in data.frame
.
-
trim
: Ein regulärer Ausdruck von Zeichen, die entfernt werden müssen, bevor versucht wird, eine numerische Matrix zu erzwingen. Ein Muster ist in die Funktion eingebaut: trim = "cut"
. Dadurch wird das reguläre Ausdrucksmuster so festgelegt, dass (,), [und] von der Eingabe entfernt werden.
Hier ist die Funktion (mit Kommentaren, die zeigen, wie ich Ihre Anweisungen verwendet habe, um es zusammenzusetzen):
%Vor%
Hier ist ein Beispiel für data.frame
, mit dem Sie arbeiten können:
%Vor%
Jetzt können wir einfach tun:
%Vor%
Hier ist ein Beispiel für die Funktion, die in einigen erfundenen Daten in Aktion ist:
%Vor%
Übrigens, mit den von Ihnen bereitgestellten Beispieldaten, wo ich glaube, dass es einen Fehler in einem Ihrer Bereiche gab (alle wurden durch Bindestriche getrennt, mit Ausnahme eines durch Komma getrennten), da strsplit
a verwendet Regulärer Ausdruck standardmäßig zum Aufteilen, können Sie die Funktion wie folgt verwenden:
%Vor%