Modus eines Vektors in R . finden

Jinku Hu 30 Januar 2023
  1. Verwenden Sie die benutzerdefinierte Funktion, um den Modus eines R-Vektors zu finden
  2. Verwenden Sie map_dbl, um die Funktion FindMode auf jede DataFramespalte in R . anzuwenden
Modus eines Vektors in R . finden

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
Autor: Jinku Hu
Jinku Hu avatar Jinku Hu avatar

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