Trova la modalità di un vettore in R
- Usa la funzione personalizzata per trovare la modalità di un vettore R
-
Usa
map_dbl
per applicare la funzioneFindMode
a ciascuna colonna del frame di dati in R
Questo articolo spiegherà diversi metodi su come trovare una modalità di un vettore in R.
Usa la funzione personalizzata per trovare la modalità di un vettore R
La modalità è uno dei concetti statistici più elementari che denota il valore massimo di occorrenza in un insieme di valori. Di conseguenza, può essere osservato in diversi tipi di dati, ad esempio numerici o basati su caratteri. Il linguaggio R non ha una funzione integrata per il calcolo della modalità, ma possiamo implementarla utilizzando le funzioni: unique
, which.max
, tabulate
e match
. Definiamo una funzione denominata FindMode
che accetta un argomento indicato come x
. All’inizio, la funzione unique
viene chiamata su x
e memorizzata in un oggetto separato. unique
estrae i valori non duplicati dall’insieme. Può prendere un oggetto vettoriale, un frame di dati o un array come primo argomento.
Quindi, abbiamo più funzioni concatenate che iniziano con match
che prende due vettori e restituisce un vettore di corrispondenze di posizione da essi. La funzione tabulate
conta e restituisce il numero di volte in cui ogni numero intero appare in un vettore. Si noti che il vettore restituito contiene un conteggio per ogni numero intero minore o uguale all’intero massimo nel vettore dell’argomento. Infine, la funzione which.max
trova l’indice dell’elemento massimo nel vettore intero. Possiamo invocare la funzione FindMode
su ogni colonna del frame di dati utilizzando la funzione apply
. In questo caso, dichiariamo un semplice vettore intero memorizzato come frame di dati e poi passato alla funzione apply
per calcolare la media.
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)
Produzione:
x
3
In alternativa, possiamo chiamare direttamente la funzione FindMode
sul frame di dati. Il seguente codice di esempio dimostra l’utilizzo con il set di dati cars
incluso nel pacchetto datasets
.
library(purrr)
FindMode <- function(x) {
u <- unique(x)
u[which.max(tabulate(match(x, u)))]
}
apply(cars, 2, FindMode)
Produzione:
speed dist
20 26
Usa map_dbl
per applicare la funzione FindMode
a ciascuna colonna del frame di dati in R
Un’altra funzione utile per trovare la media per ogni colonna del dato frame di dati è map_dbl
, che fa parte del pacchetto purrr
incluso nel tidyverse
. Notare che questi metodi non devono essere chiamati sugli oggetti vettoriali.
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)
Produzione:
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