2016-12-22 2 views
1

У меня есть эти данные:правопреемником номер каждый раз, когда событие происходит в г

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 

Можно ли создать новый столбец г и присвоить номер в порядке возрастания каждый раз, когда 1 происходит в колонке т, к получить это:

 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

Мы можем создать логический индекс элементов, не НС в «я» и назначить («г») как последовательность «т»

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

подмножество в т == 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))

Смежные вопросы