任何人都知道'sum'中的'2'是什么意思(!is.na(HD [HD $ VAL> = 24,2]))“

时间:2016-03-21 06:14:16

标签: r

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

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
....

2 个答案:

答案 0 :(得分:3)

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

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

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

答案 1 :(得分:2)

Access-Control-Allow-Origin: * 中,索引从1而不是从0开始。因此,使用0来选择列将不会选择任何内容,我们得到0作为输出。

对于问题的第二部分,当我们没有选择任何列,即将Access-Control-Allow-Origin: root-url-here.com 的rhs留空时,它选择整个数据集列。 1,2表示所选列。

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

R

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

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

和第二列类似

&