如果模式包含NA,我如何计算模式出现次数?

时间:2016-02-05 00:04:07

标签: r

我有一串0&1,' s和NA' s

string<-c(0,1,1,0,1,1,NA,1,1,0,1,1,NA,1,0,
          0,1,0,1,1,1,NA,1,0,1,NA,1,NA,1,0,1,0,NA,1)

我想计算PATTERN&#34; 1-NA-1&#34;的次数。发生。在这种情况下,我想得到计数5.

我已尝试过表格(字符串),并尝试复制this但似乎没有任何效果。我很感激任何人的帮助!

2 个答案:

答案 0 :(得分:2)

类似的东西:

x <- which(is.na(string))
x <- x[!x %in% c(1,length(string))]
length(x[string[x-1] & string[x+1]])
# [1] 5

- 推理 -

首先,我们使用string检查NA的{​​{1}}值。然后我们找到is.na(string)的索引并将其存储在which

正如@Rick所提到的,如果第一个/最后一个值是x,那么我们下一步就会出现问题。因此,我们确保删除它们(因为它不应该被计算)。

接下来,我们希望找到NAstring[x-1]均为string[x+1]的情况。换句话说,1。请注意,1 & 1FALSE可分别评估为TRUE0。因此,如果您输入1,您将获得1 == TRUE。如果您输入TRUE,您还会获得1 & 1。因此,TRUE如果string[x-1] & string[x+1]TRUE都会返回1。我们基本上使用该向量获得逻辑向量和子集FALSE,以获得满足我们搜索的x中的所有位置。然后我们使用x来确定有多少。

答案 1 :(得分:2)

=