我有几个动物运动的大型数据集,其暂停(零幅度矢量)特别令人感兴趣。以下是我有兴趣分析的数据类型的示例:
x <- Mod(c(rnorm(2),replicate(3,0),rnorm(4),replicate(5,0),rnorm(6),replicate(7,0)))
length(x)
这个例子有27个元素,在数据中有零字符串。
我想:
谢谢!
答案 0 :(得分:2)
一个选项是来自rleid
data.table
library(data.table)
data.table(x)[,if(all(!x)) .N ,rleid(!x)]
# rleid V1
#1: 2 3
#2: 4 5
#3: 6 7
如果我们需要两列&#34; ID&#34;,&#34;值&#34;,rle
的修改选项将
ID <- inverse.rle(within.list(rle(!x), {
values[values] <- paste0("z", seq_along(values[values]))
i1 <- !grepl("^z", values)
values[i1] <- paste0("n", seq_along(values[i1])) }))
d1 <- data.frame(ID, values = x, stringsAsFactors=FALSE)
head(d1, 10)
# ID values
#1 n1 1.05402614
#2 n1 0.08924472
#3 z1 0.00000000
#4 z1 0.00000000
#5 z1 0.00000000
#6 n2 0.34346380
#7 n2 0.46807736
#8 n2 0.22253354
#9 n2 0.30781598
#10 z2 0.00000000