Contar el número de observaciones en R
En situaciones de la vida real, tratamos con grandes conjuntos de datos. Estos pueden superar los cientos de observaciones, y a veces puede haber una necesidad de extraer algunos datos específicos del conjunto.
Para estas situaciones, tenemos algunos métodos en R, que pueden ayudar a contar el total de observaciones de estos datos filtrados. En este tutorial trabajaremos con el siguiente DataFrame.
df <- data.frame( gender = c("M","F","M","M"),
age = c(18,19,14,22),
stream = c("Arts","Science","Arts","Commerce"))
print(df)
Producción :
gender age stream
1 M 18 Arts
2 F 19 Science
3 M 14 Arts
4 M 22 Commerce
El primer método implica las funciones with()
y sum()
.
La función with()
devuelve un vector lógico basado en alguna expresión después de aplicarla a todo el conjunto de datos, y la función sum()
devolverá la suma de todas las observaciones True
.
El siguiente fragmento de código muestra cómo funciona esto.
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
También podemos sumar múltiples expresiones utilizando el operador &
.
sum(with(df,gender == "M" & stream == "Commerce"))
[1] 1
Otro método consiste en utilizar la función nrow()
, que devuelve el número de filas de un conjunto de datos. Podemos filtrar las observaciones necesarias del DataFrame, como se muestra a continuación:
nrow(df[df$gender == "M",])
[1] 3
De nuevo, podemos añadir múltiples expresiones como lo que hacemos en la función with()
.
nrow(df[df$gender == "M" & df$stream == "Commerce",])
[1] 1
También podemos utilizar la función filter()
proporcionada en la biblioteca dplyr
. Esto devuelve un subconjunto de datos basado en alguna condición. El siguiente ejemplo explica cómo:
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