Modus eines Vektors in R . finden
- Verwenden Sie die benutzerdefinierte Funktion, um den Modus eines R-Vektors zu finden
-
Verwenden Sie
map_dbl
, um die FunktionFindMode
auf jede DataFramespalte in R . anzuwenden
In diesem Artikel werden verschiedene Methoden erläutert, um einen Modus eines Vektors in R zu finden.
Verwenden Sie die benutzerdefinierte Funktion, um den Modus eines R-Vektors zu finden
Modus ist eines der grundlegendsten statistischen Konzepte, das den maximalen Vorkommenswert in einem Satz von Werten angibt. Dadurch kann es in verschiedenen Datentypen beobachtet werden, beispielsweise numerisch oder zeichenbasiert. Die Sprache R hat keine eingebaute Funktion zum Berechnen des Modus, aber wir können sie mit den Funktionen unique
, which.max
, tabulate
und match
implementieren. Wir definieren eine Funktion namens FindMode
, die ein als x
bezeichnetes Argument akzeptiert. Zunächst wird die Funktion unique
auf x
aufgerufen und in einem separaten Objekt gespeichert. unique
extrahiert nicht doppelte Werte aus dem Set. Als erstes Argument kann ein Vektorobjekt, ein DataFrame oder ein Array verwendet werden.
Dann haben wir mehrere verkettete Funktionen, die mit match
beginnen, die zwei Vektoren nehmen und einen Vektor von Positionsübereinstimmungen daraus zurückgeben. Die Funktion tabulate
zählt und gibt zurück, wie oft jede ganze Zahl in einem Vektor vorkommt. Beachten Sie, dass der zurückgegebene Vektor eine Zählung für jede Ganzzahl enthält, die kleiner oder gleich der maximalen Ganzzahl im Argumentvektor ist. Schließlich findet die Funktion which.max
den Index des maximalen Elements im Integer-Vektor. Wir können die Funktion FindMode
für jede Spalte des DataFrames mit der Funktion apply
aufrufen. In diesem Fall deklarieren wir einen einfachen Integer-Vektor, der als DataFrame gespeichert ist und dann an die Funktion apply
übergeben wird, um den Mittelwert zu berechnen.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
apply(df, 2, FindMode)
Ausgabe:
x
3
Alternativ können wir die Funktion FindMode
direkt am DataFrame aufrufen. Der folgende Beispielcode demonstriert die Verwendung mit dem Datensatz cars
, der im Paket datasets
enthalten ist.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
apply(cars, 2, FindMode)
Ausgabe:
speed dist
20 26
Verwenden Sie map_dbl
, um die Funktion FindMode
auf jede DataFramespalte in R . anzuwenden
Eine weitere nützliche Funktion, um den Mittelwert für jede Spalte des gegebenen DataFrames zu ermitteln, ist map_dbl
, die Teil des im tidyverse
enthaltenen Pakets purrr
ist. Beachten Sie, dass diese Methoden nicht für die Vektorobjekte aufgerufen werden sollen.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
x <- c(12, 44, 3, -4.2, 3, 3.2, 54, 4, -11, -8, 2.5)
df <- data.frame(x)
map_dbl(df, FindMode)
map_dbl(cars, FindMode)
Ausgabe:
x
3
speed dist
20 26
Founder of DelftStack.com. Jinku has worked in the robotics and automotive industries for over 8 years. He sharpened his coding skills when he needed to do the automatic testing, data collection from remote servers and report creation from the endurance test. He is from an electrical/electronics engineering background but has expanded his interest to embedded electronics, embedded programming and front-/back-end programming.
LinkedIn Facebook