Contare il numero di osservazioni in R
In situazioni di vita reale, trattiamo grandi set di dati. Ciò può superare le centinaia di osservazioni e talvolta potrebbe essere necessario estrarre alcuni dati specifici dall’insieme.
Per tali situazioni, abbiamo alcuni metodi in R, che possono aiutare a contare le osservazioni totali di questi dati filtrati. Lavoreremo sul seguente DataFrame in questo tutorial.
df <- data.frame( gender = c("M","F","M","M"),
age = c(18,19,14,22),
stream = c("Arts","Science","Arts","Commerce"))
print(df)
Produzione:
gender age stream
1 M 18 Arts
2 F 19 Science
3 M 14 Arts
4 M 22 Commerce
Il primo metodo coinvolge le funzioni with()
e sum()
.
La funzione with()
restituisce un vettore logico basato su qualche espressione dopo averla applicata all’intero dataset, e la funzione sum()
restituirà la somma di tutte le osservazioni True
.
Il seguente frammento di codice mostrerà come funziona.
df <- data.frame( gender = c("M","F","M","M"),
age = c(18,19,14,22),
stream = c("Arts","Science","Arts","Commerce"))
sum(with(df,gender == "M"))
[1] 3
Possiamo anche aggiungere più espressioni usando l’operatore &
.
sum(with(df,gender == "M" & stream == "Commerce"))
[1] 1
Un altro metodo prevede l’uso della funzione nrow()
, che restituisce il numero di righe in un set di dati. Possiamo filtrare le osservazioni richieste dal DataFrame, come mostrato di seguito:
nrow(df[df$gender == "M",])
[1] 3
Di nuovo, possiamo aggiungere più espressioni come quello che facciamo nella funzione with()
.
nrow(df[df$gender == "M" & df$stream == "Commerce",])
[1] 1
Possiamo anche usare la funzione filer()
fornita nella libreria dplyr
. Ciò restituisce un sottoinsieme di dati basato su alcune condizioni. L’esempio seguente spiega come:
library(dplyr)
nrow(filter(df,gender == "M"))
[1] 3
nrow(filter(df,gender == "M" & stream == "Commerce"))
[1] 1
Manav is a IT Professional who has a lot of experience as a core developer in many live projects. He is an avid learner who enjoys learning new things and sharing his findings whenever possible.
LinkedIn