我有一串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但似乎没有任何效果。我很感激任何人的帮助!
答案 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
,那么我们下一步就会出现问题。因此,我们确保删除它们(因为它不应该被计算)。
接下来,我们希望找到NA
和string[x-1]
均为string[x+1]
的情况。换句话说,1
。请注意,1 & 1
和FALSE
可分别评估为TRUE
和0
。因此,如果您输入1
,您将获得1 == TRUE
。如果您输入TRUE
,您还会获得1 & 1
。因此,TRUE
如果string[x-1] & string[x+1]
和TRUE
都会返回1
。我们基本上使用该向量获得逻辑向量和子集FALSE
,以获得满足我们搜索的x
中的所有位置。然后我们使用x
来确定有多少。
答案 1 :(得分:2)
=