R 中的观测值计数

Manav Narula 2021年2月25日
R 中的观测值计数

在现实生活中,我们要处理大量的数据集。这可能会超过数百个观测值,有时可能需要从整体中提取一些特定的数据。

对于这样的情况,我们在 R 中有一些方法,可以辅助统计这些过滤后的数据的总观测值。我们将在本教程中使用以下 DataFrame。

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

输出:

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

第一个方法涉及 with()sum() 函数。

with() 函数在应用于整个数据集后,根据某个表达式返回一个逻辑向量,而 sum() 函数将返回所有 True 观测值的总和。

下面的代码片段将展示如何工作。

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

我们还可以使用&运算符添加多个表达式。

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

另一种方法涉及使用 nrow() 函数,它返回数据集中的行数。我们可以从 DataFrame 中筛选出所需的观测值,如下图所示。

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

同样,我们可以添加多个表达式,就像我们在 with() 函数中做的那样。

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

我们也可以使用 dplyr 库中提供的 filer() 函数。这将根据一些条件返回一个数据的子集。下面的例子解释了如何操作。

library(dplyr)
nrow(filter(df,gender == "M"))
[1] 3
nrow(filter(df,gender == "M" & stream == "Commerce"))
[1] 1
作者: Manav Narula
Manav Narula avatar Manav Narula avatar

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

相关文章 - R Data Frame