R 中的观测值计数
Manav Narula
2021年2月25日
在现实生活中,我们要处理大量的数据集。这可能会超过数百个观测值,有时可能需要从整体中提取一些特定的数据。
对于这样的情况,我们在 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 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