除了在开头,计算向量中的NA

时间:2017-08-23 07:18:40

标签: r

如何计算NAs忽略开始的NAs?

temp <- c(NA, NA, 2, 3, NA, NA, 56, NA)

此向量中的NA总数为5,起始NA序列包含两个元素。因此,正确的答案应该是3.

2 个答案:

答案 0 :(得分:3)

我们可以从第一个非NA元素中对vector进行子集,然后执行is.na以获取逻辑向量并获取sum

sum(is.na(temp[which(!is.na(temp))[1]:length(temp)]))
#[1] 3

或者另一种选择是基于逻辑向量的cumsum进行子集,然后按照上面的方式进行

sum(is.na(temp[cumsum(!is.na(temp))>0]))
#[1] 3

答案 1 :(得分:2)

您可以使用rle执行此操作:

with(rle(is.na(temp)), sum(lengths[-1][values[-1]]))
#[1] 3

这意味着我们首先计算每个NA /非NA序列的运行长度。然后我们总结了NA序列的所有长度,但我们排除了第一个序列。第一个序列可以是NA序列,在这种情况下我们想要排除它。它也可能是一个非NA序列,但在这种情况下,如果它被删除,我们不介意,因为我们只想总结NA序列长度。