簡體   English   中英

在R中使用cumsum()來計數零而不是1

[英]Using cumsum() in R to count number of zeros instead of 1's

有沒有一種方法可以在R中使用cumsum()來計數零而不是1的數量? 基本上,我只有一個0和1的列表,每次遇到0時,我都希望保留它們的數量,而不是1。

我們創建一個邏輯索引,其中vector ('v1')的值為0('i1')。 用索引對向量進行cumsum ,將其取反以將值0轉換為TRUE,進行cumsum並通過將輸出分配回去來更新原始向量。

i1 <- !v1
v1[i1] <- cumsum(!v1[i1])
v1
#[1] 1 1 1 2 1 3 1 4

如果我們需要分別計算相鄰的0,即

library(data.table)
ave(v1, rleid(v1), FUN= function(x) if(all(!x)) seq_along(x) else x)
#[1] 1 1 1 2 1 1 1 1

數據

v1 <- c(1, 1, 0, 0, 1, 0, 1, 0)

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM