任何人都知道"2"在" sum(!is.na(HD[HD$VAL >= 24, 2])) "中的重要性

  • 本文关键字:HD 重要性 sum 任何人 na is VAL r
  • 更新时间 :
  • 英文 :


当我使用 2 或大于 0 的 numbes 时,结果是:

sum(!is.na(HD[HD$VAL >= 24, 1]))
# [1] 53
sum(!is.na(HD[HD$VAL >= 24, 2]))
# [1] 53

当我什么都没用时:

sum(!is.na(HD[HD$VAL >= 24, ]))
# [1] 9276

0

sum(!is.na(HD[HD$VAL >= 24, 0]))
# [1] 0

为什么?

示例数据为:

[1] 17 NA 18 19 20 15 NA NA 13  1 12 15 12 NA NA 17 15 11 NA NA NA  1 NA NA 17 13 NA  8 15 NA  8
[32] 16 22 11 14 19 10 NA 14 18 11 NA  8 12 20 NA  8 12 NA NA  6 15 NA 17 13 10 NA NA 21 17 14 NA
....

在第二个索引中使用数字时,代码仅对这些列中的值求和

sum(!is.na(HD[HD$VAL >= 24, 1]))

这仅对值不是 NA 的第 1 列求和。将列索引留空时,将求和值不是 NA 的所有列。

R中,索引从 1 开始,而不是从 0 开始。 因此,使用 0 选择列不会选择任何内容,我们得到 0 作为输出。

对于问题的第二部分,当我们不选择任何列时,即将,的 rhs 留空时,它正在选择整个数据集列。 1, 2 表示所选列。

在前两种情况下,它对对应于大于 24 的"VAL"的列 1、2 进行子集。然后,我们使用 !is.na 转换为逻辑向量并得到总和。在这种情况下,该列 1 或 2 的子集中有 53 个非 NA 值

sum(!is.na(HD[HD$VAL >= 24, 1]))

但是,我们不需要执行此子集。 我们可以使用&

sum(HD$VAL >==24 & !is.na(HD[,1]))

第二列也是如此

sum(HD$VAL >==24 & !is.na(HD[,2])) 

最新更新