我有小时价值.我想计算自上一次非零以来该值连续多少小时.对于电子表格或循环来说,这是一项简单的工作,但我希望有一个快速的矢量化单行程来完成任务.
x <- c(1, 0, 1, 0, 0, 0, 1, 1, 0, 0)
df <- data.frame(x, zcount = NA)
df$zcount[1] <- ifelse(df$x[1] == 0, 1, 0)
for(i in 2:nrow(df))
df$zcount[i] <- ifelse(df$x[i] == 0, df$zcount[i - 1] + 1, 0)
Run Code Online (Sandbox Code Playgroud)
期望的输出:
R> df
x zcount
1 1 0
2 0 1
3 1 0
4 0 1
5 0 2
6 0 3
7 1 0
8 1 0
9 0 1
10 0 2
Run Code Online (Sandbox Code Playgroud) 我有一个像逻辑矢量
as.logical(c(0,0,1,1,1,0,1,1,0,0,0,1,1,1,1))
Run Code Online (Sandbox Code Playgroud)
但更长.我怎样才能将其转换为:
c(0,0,1,2,3,0,1,2,0,0,0,1,2,3,4)
Run Code Online (Sandbox Code Playgroud)
通过计算一个的长度?
r ×2