2016-12-22 56 views
1

發生時,我有這樣的數據:分配數量的每一個事件中的R

t <- c(NA,NA,NA,1,NA,NA,NA,NA,1,NA,1) 
dt <- data.table(t) 

    t 
1: NA 
2: NA 
3: NA 
4: 1 
5: NA 
6: NA 
7: NA 
8: NA 
9: 1 
10: NA 
11: 1 

是否有可能創造新的列z和升序分配一個號碼每次1出現在T欄時間,得到這樣的:

 t z 
1: NA NA 
2: NA NA 
3: NA NA 
4: 1 1 
5: NA NA 
6: NA NA 
7: NA NA 
8: NA NA 
9: 1 2 
10: NA NA 
11: 1 3 

謝謝

回答

3

我們可以創建非NA元素的「i」的邏輯索引和分配(「Z」)作爲「T」

序列
dt[!is.na(t), z := seq_along(t)] 
dt 
#  t z 
# 1: NA NA 
# 2: NA NA 
# 3: NA NA 
# 4: 1 1 
# 5: NA NA 
# 6: NA NA 
# 7: NA NA 
# 8: NA NA 
# 9: 1 2 
#10: NA NA 
#11: 1 3 
+1

謝謝你,這個工程 – Christina

1

子對T == 1,並採取累積和

dt[t==1, z := cumsum(t)] 
+0

謝謝,這個作品 – Christina

0

library(dplyr) 

df <- data.frame(t = c(1, NA, 1, NA, 1, NA, NA)) df %>% group_by(t) %>% mutate(z = cumsum(t))

相關問題