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 FunktionFindModeauf 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