Count Number of Observations in R

In real-life situations, we deal with large sets of data. This may exceed hundreds of observations, and sometimes there may be a need to extract some specific data from the whole.

For such situations, we have a few methods in R, which can aid in counting the total observations of this filtered data. We will work on the following DataFrame in this tutorial.

df <- data.frame( gender = c("M","F","M","M"),
                  age = c(18,19,14,22),
                  stream = c("Arts","Science","Arts","Commerce"))
print(df)

Output:

  gender age   stream
1      M  18     Arts
2      F  19  Science
3      M  14     Arts
4      M  22 Commerce

The first method involves the with() and the sum() functions.

The with() function returns a logical vector based on some expression after applying it to the whole dataset, and the sum() function will return the sum of all the TRUE observations.

The following code snippet will show how this works.

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

We can also add multiple expressions using the & operator.

sum(with(df,gender == "M" & stream == "Commerce"))
[1] 1

Another method involves the use of the nrow() function, which returns the number of rows in a dataset. We can filter out the required observations from the DataFrame, as shown below:

nrow(df[df$gender == "M",])
[1] 3

Again, we can add multiple expressions as what we do in the with() function.

nrow(df[df$gender == "M" & df$stream == "Commerce",])
[1] 1

We can also use the filer() function provided in the dplyr library. This returns a subset of data based on some condition. The following example explains how:

library(dplyr)
nrow(filter(df,gender == "M"))
[1] 3
nrow(filter(df,gender == "M" & stream == "Commerce"))
[1] 1

Related Article - R DataFrame

  • Count Number of Rows in R