[英]How to add elements to a vector based on another vector position wise in R
我有一個長度為 192 的正 integer 值向量 C。我想根據這個向量 C 生成另一個向量。 要創建的新向量稱為 B(與 C 長度相同)。 創建算法是:
每當在 C 中觀察到大於 0 的值時,將相同的值添加回向量 B 中的 12 個位置。例如,如果 C 的前 15 個條目為 0,第 16 個條目為 3,那么我想添加值 3,在向量 B 中向后 12 個位置(即 16-12=位置 4)。向量 B 將以這種方式在 C 的所有值上生成。
任何幫助將不勝感激。 向量C可以通過R庫“暴發”獲得,package的數據文件是ebola_kikwit_1。
這似乎不是很棘手。 一個索引向量和一個for
循環將完成問題的要求。
library("outbreaks")
i <- which(ebola_kikwit_1995$onset > 0)
i <- i[i > 12]
ebola_kikwit_1995$B <- 0L
for(j in i){
ebola_kikwit_1995$B[j] <- ebola_kikwit_1995$onset[j] + ebola_kikwit_1995$B[j - 12]
}
ebola_kikwit_1995$B
# [1] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# [28] 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0
# [55] 0 0 0 0 0 1 1 1 0 0 0 0 3 0 0 0 1 2 0 2 0 2 0 1 0 0 0
# [82] 0 0 0 0 4 0 3 1 3 1 0 1 1 1 1 1 5 3 0 5 7 2 2 5 3 2 8
#[109] 5 9 5 4 10 10 13 14 20 10 9 16 7 14 13 10 18 13 17 21 31 13 21 21 15 17 16
#[136] 18 22 18 18 24 35 16 22 23 18 18 19 21 26 21 23 26 37 17 0 25 0 0 21 0 0 0
#[163] 25 28 0 18 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 0 1 0
#[190] 0 0 0
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.